113 files changed, 536 insertions, 531 deletions
diff --git a/core/applets/cardmon/cardmon.cpp b/core/applets/cardmon/cardmon.cpp index 7625545..e8072c6 100644 --- a/core/applets/cardmon/cardmon.cpp +++ b/core/applets/cardmon/cardmon.cpp | |||
@@ -1,157 +1,157 @@ | |||
1 | /* | 1 | /* |
2 | * cardmon.cpp | 2 | * cardmon.cpp |
3 | * | 3 | * |
4 | * --------------------- | 4 | * --------------------- |
5 | * | 5 | * |
6 | * copyright : (c) 2002 by Maximilian Reiss | 6 | * copyright : (c) 2002 by Maximilian Reiss |
7 | * email : max.reiss@gmx.de | 7 | * email : max.reiss@gmx.de |
8 | * based on two apps by Devin Butterfield | 8 | * based on two apps by Devin Butterfield |
9 | */ | 9 | */ |
10 | /*************************************************************************** | 10 | /*************************************************************************** |
11 | * * | 11 | * * |
12 | * This program is free software; you can redistribute it and/or modify * | 12 | * This program is free software; you can redistribute it and/or modify * |
13 | * it under the terms of the GNU General Public License as published by * | 13 | * it under the terms of the GNU General Public License as published by * |
14 | * the Free Software Foundation; either version 2 of the License, or * | 14 | * the Free Software Foundation; either version 2 of the License, or * |
15 | * (at your option) any later version. * | 15 | * (at your option) any later version. * |
16 | * * | 16 | * * |
17 | ***************************************************************************/ | 17 | ***************************************************************************/ |
18 | 18 | ||
19 | #include "cardmon.h" | 19 | #include "cardmon.h" |
20 | 20 | ||
21 | /* OPIE */ | 21 | /* OPIE */ |
22 | #include <opie2/odevice.h> | 22 | #include <opie2/odevice.h> |
23 | #include <opie2/otaskbarapplet.h> | 23 | #include <opie2/otaskbarapplet.h> |
24 | #include <qpe/applnk.h> | 24 | #include <qpe/applnk.h> |
25 | #include <qpe/resource.h> | 25 | #include <qpe/resource.h> |
26 | 26 | ||
27 | /* QT */ | 27 | /* QT */ |
28 | #include <qcopchannel_qws.h> | 28 | #include <qcopchannel_qws.h> |
29 | #include <qpainter.h> | 29 | #include <qpainter.h> |
30 | #include <qfile.h> | 30 | #include <qfile.h> |
31 | #include <qtextstream.h> | 31 | #include <qtextstream.h> |
32 | #include <qsound.h> | 32 | #include <qsound.h> |
33 | #include <qtimer.h> | 33 | #include <qtimer.h> |
34 | 34 | ||
35 | /* STD */ | 35 | /* STD */ |
36 | #include <stdio.h> | 36 | #include <stdio.h> |
37 | #include <unistd.h> | 37 | #include <unistd.h> |
38 | #include <stdlib.h> | 38 | #include <stdlib.h> |
39 | #include <string.h> | 39 | #include <string.h> |
40 | #include <fcntl.h> | 40 | #include <fcntl.h> |
41 | 41 | ||
42 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) | 42 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) |
43 | #include <sys/vfs.h> | 43 | #include <sys/vfs.h> |
44 | #include <mntent.h> | 44 | #include <mntent.h> |
45 | #endif | 45 | #endif |
46 | 46 | ||
47 | using namespace Opie; | 47 | using namespace Opie; |
48 | 48 | ||
49 | CardMonitor::CardMonitor( QWidget * parent ) : QWidget( parent ), | 49 | CardMonitor::CardMonitor( QWidget * parent ) : QWidget( parent ), |
50 | pm( Resource::loadPixmap( "cardmon/pcmcia" ) ) | 50 | pm( Resource::loadPixmap( "cardmon/pcmcia" ) ) |
51 | { | 51 | { |
52 | 52 | ||
53 | QCopChannel * pcmciaChannel = new QCopChannel( "QPE/Card", this ); | 53 | QCopChannel * pcmciaChannel = new QCopChannel( "QPE/Card", this ); |
54 | connect( pcmciaChannel, | 54 | connect( pcmciaChannel, |
55 | SIGNAL( received( const QCString &, const QByteArray & ) ), this, | 55 | SIGNAL( received(const QCString&,const QByteArray&) ), this, |
56 | SLOT( cardMessage( const QCString &, const QByteArray & ) ) ); | 56 | SLOT( cardMessage(const QCString&,const QByteArray&) ) ); |
57 | 57 | ||
58 | QCopChannel *sdChannel = new QCopChannel( "QPE/Card", this ); | 58 | QCopChannel *sdChannel = new QCopChannel( "QPE/Card", this ); |
59 | connect( sdChannel, | 59 | connect( sdChannel, |
60 | SIGNAL( received( const QCString &, const QByteArray & ) ), this, | 60 | SIGNAL( received(const QCString&,const QByteArray&) ), this, |
61 | SLOT( cardMessage( const QCString &, const QByteArray & ) ) ); | 61 | SLOT( cardMessage(const QCString&,const QByteArray&) ) ); |
62 | 62 | ||
63 | cardInPcmcia0 = FALSE; | 63 | cardInPcmcia0 = FALSE; |
64 | cardInPcmcia1 = FALSE; | 64 | cardInPcmcia1 = FALSE; |
65 | cardInSd = FALSE; | 65 | cardInSd = FALSE; |
66 | 66 | ||
67 | setFocusPolicy( NoFocus ); | 67 | setFocusPolicy( NoFocus ); |
68 | 68 | ||
69 | setFixedWidth ( AppLnk::smallIconSize() ); | 69 | setFixedWidth ( AppLnk::smallIconSize() ); |
70 | setFixedHeight ( AppLnk::smallIconSize() ); | 70 | setFixedHeight ( AppLnk::smallIconSize() ); |
71 | 71 | ||
72 | getStatusPcmcia( TRUE ); | 72 | getStatusPcmcia( TRUE ); |
73 | getStatusSd( TRUE ); | 73 | getStatusSd( TRUE ); |
74 | repaint( FALSE ); | 74 | repaint( FALSE ); |
75 | popupMenu = 0; | 75 | popupMenu = 0; |
76 | } | 76 | } |
77 | 77 | ||
78 | CardMonitor::~CardMonitor() | 78 | CardMonitor::~CardMonitor() |
79 | { | 79 | { |
80 | if ( popupMenu ) | 80 | if ( popupMenu ) |
81 | { | 81 | { |
82 | delete popupMenu; | 82 | delete popupMenu; |
83 | } | 83 | } |
84 | } | 84 | } |
85 | 85 | ||
86 | void CardMonitor::popUp( QString message, QString icon ) | 86 | void CardMonitor::popUp( QString message, QString icon ) |
87 | { | 87 | { |
88 | if ( !popupMenu ) | 88 | if ( !popupMenu ) |
89 | { | 89 | { |
90 | popupMenu = new QPopupMenu( this ); | 90 | popupMenu = new QPopupMenu( this ); |
91 | } | 91 | } |
92 | 92 | ||
93 | popupMenu->clear(); | 93 | popupMenu->clear(); |
94 | if ( icon.isEmpty() ) | 94 | if ( icon.isEmpty() ) |
95 | { | 95 | { |
96 | popupMenu->insertItem( message, 0 ); | 96 | popupMenu->insertItem( message, 0 ); |
97 | } | 97 | } |
98 | else | 98 | else |
99 | { | 99 | { |
100 | popupMenu->insertItem( QIconSet( Resource::loadPixmap( icon ) ), | 100 | popupMenu->insertItem( QIconSet( Resource::loadPixmap( icon ) ), |
101 | message, 0 ); | 101 | message, 0 ); |
102 | } | 102 | } |
103 | 103 | ||
104 | QPoint p = mapToGlobal( QPoint( 0, 0 ) ); | 104 | QPoint p = mapToGlobal( QPoint( 0, 0 ) ); |
105 | QSize s = popupMenu->sizeHint(); | 105 | QSize s = popupMenu->sizeHint(); |
106 | popupMenu->popup( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ), | 106 | popupMenu->popup( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ), |
107 | p.y() - s.height() ), 0 ); | 107 | p.y() - s.height() ), 0 ); |
108 | 108 | ||
109 | QTimer::singleShot( 2000, this, SLOT( popupTimeout() ) ); | 109 | QTimer::singleShot( 2000, this, SLOT( popupTimeout() ) ); |
110 | } | 110 | } |
111 | 111 | ||
112 | void CardMonitor::popupTimeout() | 112 | void CardMonitor::popupTimeout() |
113 | { | 113 | { |
114 | popupMenu->hide(); | 114 | popupMenu->hide(); |
115 | } | 115 | } |
116 | 116 | ||
117 | void CardMonitor::mousePressEvent( QMouseEvent * ) | 117 | void CardMonitor::mousePressEvent( QMouseEvent * ) |
118 | { | 118 | { |
119 | QPopupMenu * menu = new QPopupMenu( this ); | 119 | QPopupMenu * menu = new QPopupMenu( this ); |
120 | QString cmd; | 120 | QString cmd; |
121 | int err = 0; | 121 | int err = 0; |
122 | 122 | ||
123 | if ( cardInSd ) | 123 | if ( cardInSd ) |
124 | { | 124 | { |
125 | menu->insertItem( QIconSet( Resource::loadPixmap( "cardmon/ide" ) ), | 125 | menu->insertItem( QIconSet( Resource::loadPixmap( "cardmon/ide" ) ), |
126 | tr( "Eject SD/MMC card" ), 0 ); | 126 | tr( "Eject SD/MMC card" ), 0 ); |
127 | } | 127 | } |
128 | 128 | ||
129 | if ( cardInPcmcia0 ) | 129 | if ( cardInPcmcia0 ) |
130 | { | 130 | { |
131 | menu-> | 131 | menu-> |
132 | insertItem( QIconSet | 132 | insertItem( QIconSet |
133 | ( Resource::loadPixmap( "cardmon/" + cardInPcmcia0Type ) ), | 133 | ( Resource::loadPixmap( "cardmon/" + cardInPcmcia0Type ) ), |
134 | tr( "Eject card 0: %1" ).arg( cardInPcmcia0Name ), 1 ); | 134 | tr( "Eject card 0: %1" ).arg( cardInPcmcia0Name ), 1 ); |
135 | } | 135 | } |
136 | 136 | ||
137 | if ( cardInPcmcia1 ) | 137 | if ( cardInPcmcia1 ) |
138 | { | 138 | { |
139 | menu-> | 139 | menu-> |
140 | insertItem( QIconSet | 140 | insertItem( QIconSet |
141 | ( Resource::loadPixmap( "cardmon/" + cardInPcmcia1Type ) ), | 141 | ( Resource::loadPixmap( "cardmon/" + cardInPcmcia1Type ) ), |
142 | tr( "Eject card 1: %1" ).arg( cardInPcmcia1Name ), 2 ); | 142 | tr( "Eject card 1: %1" ).arg( cardInPcmcia1Name ), 2 ); |
143 | } | 143 | } |
144 | 144 | ||
145 | QPoint p = mapToGlobal( QPoint( 0, 0 ) ); | 145 | QPoint p = mapToGlobal( QPoint( 0, 0 ) ); |
146 | QSize s = menu->sizeHint(); | 146 | QSize s = menu->sizeHint(); |
147 | int opt = menu->exec( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ), | 147 | int opt = menu->exec( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ), |
148 | p.y() - s.height() ), 0 ); | 148 | p.y() - s.height() ), 0 ); |
149 | 149 | ||
150 | if ( opt == 1 ) | 150 | if ( opt == 1 ) |
151 | { | 151 | { |
152 | cmd = "/sbin/cardctl eject 0"; | 152 | cmd = "/sbin/cardctl eject 0"; |
153 | err = system( ( const char * ) cmd ); | 153 | err = system( ( const char * ) cmd ); |
154 | if ( err != 0 ) | 154 | if ( err != 0 ) |
155 | { | 155 | { |
156 | qDebug( "Could not execute `/sbin/cardctl eject 0'! err=%d", | 156 | qDebug( "Could not execute `/sbin/cardctl eject 0'! err=%d", |
157 | err ); | 157 | err ); |
diff --git a/core/applets/clipboardapplet/clipboard.cpp b/core/applets/clipboardapplet/clipboard.cpp index 34d151e..4fc8076 100644 --- a/core/applets/clipboardapplet/clipboard.cpp +++ b/core/applets/clipboardapplet/clipboard.cpp | |||
@@ -1,189 +1,189 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "clipboard.h" | 21 | #include "clipboard.h" |
22 | 22 | ||
23 | #include <opie2/otaskbarapplet.h> | 23 | #include <opie2/otaskbarapplet.h> |
24 | #include <qpe/resource.h> | 24 | #include <qpe/resource.h> |
25 | #include <qpe/applnk.h> | 25 | #include <qpe/applnk.h> |
26 | 26 | ||
27 | #include <qpainter.h> | 27 | #include <qpainter.h> |
28 | #include <qpopupmenu.h> | 28 | #include <qpopupmenu.h> |
29 | #include <qwindowsystem_qws.h> | 29 | #include <qwindowsystem_qws.h> |
30 | #include <qapplication.h> | 30 | #include <qapplication.h> |
31 | #include <qclipboard.h> | 31 | #include <qclipboard.h> |
32 | #include <qtimer.h> | 32 | #include <qtimer.h> |
33 | 33 | ||
34 | //=========================================================================== | 34 | //=========================================================================== |
35 | 35 | ||
36 | 36 | ||
37 | ClipboardApplet::ClipboardApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) | 37 | ClipboardApplet::ClipboardApplet( QWidget *parent, const char *name ) : QWidget( parent, name ) |
38 | { | 38 | { |
39 | setFixedWidth ( AppLnk::smallIconSize() ); | 39 | setFixedWidth ( AppLnk::smallIconSize() ); |
40 | setFixedHeight ( AppLnk::smallIconSize() ); | 40 | setFixedHeight ( AppLnk::smallIconSize() ); |
41 | 41 | ||
42 | QImage img = Resource::loadImage( "paste"); | 42 | QImage img = Resource::loadImage( "paste"); |
43 | img = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); | 43 | img = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); |
44 | 44 | ||
45 | m_clipboardPixmap.convertFromImage( img ); | 45 | m_clipboardPixmap.convertFromImage( img ); |
46 | 46 | ||
47 | m_timer = new QTimer ( this ); | 47 | m_timer = new QTimer ( this ); |
48 | 48 | ||
49 | connect ( QApplication::clipboard ( ), SIGNAL( dataChanged ( )), this, SLOT( newData ( ))); | 49 | connect ( QApplication::clipboard ( ), SIGNAL( dataChanged()), this, SLOT( newData())); |
50 | connect ( m_timer, SIGNAL( timeout ( )), this, SLOT( newData ( ))); | 50 | connect ( m_timer, SIGNAL( timeout()), this, SLOT( newData())); |
51 | connect ( qApp, SIGNAL( aboutToQuit ( )), this, SLOT( shutdown ( ))); | 51 | connect ( qApp, SIGNAL( aboutToQuit()), this, SLOT( shutdown())); |
52 | 52 | ||
53 | m_menu = 0; | 53 | m_menu = 0; |
54 | m_dirty = true; | 54 | m_dirty = true; |
55 | m_lasttext = QString::null; | 55 | m_lasttext = QString::null; |
56 | 56 | ||
57 | m_timer-> start ( 0, true ); | 57 | m_timer-> start ( 0, true ); |
58 | } | 58 | } |
59 | 59 | ||
60 | ClipboardApplet::~ClipboardApplet ( ) | 60 | ClipboardApplet::~ClipboardApplet ( ) |
61 | { | 61 | { |
62 | } | 62 | } |
63 | 63 | ||
64 | int ClipboardApplet::position() | 64 | int ClipboardApplet::position() |
65 | { | 65 | { |
66 | return 6; | 66 | return 6; |
67 | } | 67 | } |
68 | 68 | ||
69 | void ClipboardApplet::shutdown ( ) | 69 | void ClipboardApplet::shutdown ( ) |
70 | { | 70 | { |
71 | // the timer has to be stopped, or Qt/E will hang on quit() | 71 | // the timer has to be stopped, or Qt/E will hang on quit() |
72 | // see launcher/desktop.cpp | 72 | // see launcher/desktop.cpp |
73 | 73 | ||
74 | m_timer-> stop ( ); | 74 | m_timer-> stop ( ); |
75 | } | 75 | } |
76 | 76 | ||
77 | void ClipboardApplet::mousePressEvent ( QMouseEvent *) | 77 | void ClipboardApplet::mousePressEvent ( QMouseEvent *) |
78 | { | 78 | { |
79 | if ( m_dirty ) { | 79 | if ( m_dirty ) { |
80 | delete m_menu; | 80 | delete m_menu; |
81 | 81 | ||
82 | m_menu = new QPopupMenu ( this ); | 82 | m_menu = new QPopupMenu ( this ); |
83 | m_menu-> setCheckable ( true ); | 83 | m_menu-> setCheckable ( true ); |
84 | 84 | ||
85 | if ( m_history. count ( )) { | 85 | if ( m_history. count ( )) { |
86 | for ( unsigned int i = 0; i < m_history. count ( ); i++ ) { | 86 | for ( unsigned int i = 0; i < m_history. count ( ); i++ ) { |
87 | QString str = m_history [i]; | 87 | QString str = m_history [i]; |
88 | 88 | ||
89 | if ( str. length ( ) > 20 ) | 89 | if ( str. length ( ) > 20 ) |
90 | str = str. left ( 20 ) + "..."; | 90 | str = str. left ( 20 ) + "..."; |
91 | 91 | ||
92 | m_menu-> insertItem ( QString ( "%1: %2" ). arg ( i + 1 ). arg ( str ), i ); | 92 | m_menu-> insertItem ( QString ( "%1: %2" ). arg ( i + 1 ). arg ( str ), i ); |
93 | m_menu-> setItemChecked ( i, false ); | 93 | m_menu-> setItemChecked ( i, false ); |
94 | } | 94 | } |
95 | m_menu-> setItemChecked ( m_history. count ( ) - 1, true ); | 95 | m_menu-> setItemChecked ( m_history. count ( ) - 1, true ); |
96 | m_menu-> insertSeparator ( ); | 96 | m_menu-> insertSeparator ( ); |
97 | } | 97 | } |
98 | m_menu-> insertItem ( QIconSet ( Resource::loadPixmap ( "cut" )), tr( "Cut" ), 100 ); | 98 | m_menu-> insertItem ( QIconSet ( Resource::loadPixmap ( "cut" )), tr( "Cut" ), 100 ); |
99 | m_menu-> insertItem ( QIconSet ( Resource::loadPixmap ( "copy" )), tr( "Copy" ), 101 ); | 99 | m_menu-> insertItem ( QIconSet ( Resource::loadPixmap ( "copy" )), tr( "Copy" ), 101 ); |
100 | m_menu-> insertItem ( QIconSet ( Resource::loadPixmap ( "paste" )), tr( "Paste" ), 102 ); | 100 | m_menu-> insertItem ( QIconSet ( Resource::loadPixmap ( "paste" )), tr( "Paste" ), 102 ); |
101 | 101 | ||
102 | connect ( m_menu, SIGNAL( activated ( int )), this, SLOT( action ( int ))); | 102 | connect ( m_menu, SIGNAL( activated(int)), this, SLOT( action(int))); |
103 | 103 | ||
104 | m_dirty = false; | 104 | m_dirty = false; |
105 | } | 105 | } |
106 | QPoint p = mapToGlobal ( QPoint ( 0, 0 )); | 106 | QPoint p = mapToGlobal ( QPoint ( 0, 0 )); |
107 | QSize s = m_menu-> sizeHint ( ); | 107 | QSize s = m_menu-> sizeHint ( ); |
108 | 108 | ||
109 | m_menu-> popup ( QPoint ( p. x ( ) + ( width ( ) / 2 ) - ( s. width ( ) / 2 ), p. y ( ) - s. height ( ))); | 109 | m_menu-> popup ( QPoint ( p. x ( ) + ( width ( ) / 2 ) - ( s. width ( ) / 2 ), p. y ( ) - s. height ( ))); |
110 | } | 110 | } |
111 | 111 | ||
112 | void ClipboardApplet::action(int id) | 112 | void ClipboardApplet::action(int id) |
113 | { | 113 | { |
114 | ushort unicode = 0; | 114 | ushort unicode = 0; |
115 | int scan = 0; | 115 | int scan = 0; |
116 | 116 | ||
117 | switch ( id ) { | 117 | switch ( id ) { |
118 | case 100: | 118 | case 100: |
119 | unicode = 'X' - '@'; | 119 | unicode = 'X' - '@'; |
120 | scan = Key_X; // Cut | 120 | scan = Key_X; // Cut |
121 | break; | 121 | break; |
122 | case 101: | 122 | case 101: |
123 | unicode = 'C' - '@'; | 123 | unicode = 'C' - '@'; |
124 | scan = Key_C; // Copy | 124 | scan = Key_C; // Copy |
125 | break; | 125 | break; |
126 | case 102: | 126 | case 102: |
127 | unicode = 'V' - '@'; | 127 | unicode = 'V' - '@'; |
128 | scan = Key_V; // Paste | 128 | scan = Key_V; // Paste |
129 | break; | 129 | break; |
130 | 130 | ||
131 | default: | 131 | default: |
132 | if (( id >= 0 ) && ( uint( id ) < m_history. count ( ))) { | 132 | if (( id >= 0 ) && ( uint( id ) < m_history. count ( ))) { |
133 | QApplication::clipboard ( )-> setText ( m_history [id] ); | 133 | QApplication::clipboard ( )-> setText ( m_history [id] ); |
134 | 134 | ||
135 | for ( uint i = 0; i < m_history. count ( ); i++ ) | 135 | for ( uint i = 0; i < m_history. count ( ); i++ ) |
136 | m_menu-> setItemChecked ( i, i == uint( id )); | 136 | m_menu-> setItemChecked ( i, i == uint( id )); |
137 | 137 | ||
138 | unicode = 'V' - '@'; | 138 | unicode = 'V' - '@'; |
139 | scan = Key_V; | 139 | scan = Key_V; |
140 | } | 140 | } |
141 | break; | 141 | break; |
142 | } | 142 | } |
143 | 143 | ||
144 | if ( scan ) { | 144 | if ( scan ) { |
145 | qwsServer-> sendKeyEvent ( unicode, scan, ControlButton, true, false ); | 145 | qwsServer-> sendKeyEvent ( unicode, scan, ControlButton, true, false ); |
146 | qwsServer-> sendKeyEvent ( unicode, scan, ControlButton, false, false ); | 146 | qwsServer-> sendKeyEvent ( unicode, scan, ControlButton, false, false ); |
147 | } | 147 | } |
148 | } | 148 | } |
149 | 149 | ||
150 | void ClipboardApplet::paintEvent ( QPaintEvent* ) | 150 | void ClipboardApplet::paintEvent ( QPaintEvent* ) |
151 | { | 151 | { |
152 | QPainter p ( this ); | 152 | QPainter p ( this ); |
153 | /* center the height but our pixmap is as big as the height ;)*/ | 153 | /* center the height but our pixmap is as big as the height ;)*/ |
154 | p. drawPixmap( 0, 0, | 154 | p. drawPixmap( 0, 0, |
155 | m_clipboardPixmap ); | 155 | m_clipboardPixmap ); |
156 | } | 156 | } |
157 | 157 | ||
158 | void ClipboardApplet::newData ( ) | 158 | void ClipboardApplet::newData ( ) |
159 | { | 159 | { |
160 | static bool excllock = false; | 160 | static bool excllock = false; |
161 | 161 | ||
162 | if ( excllock ) | 162 | if ( excllock ) |
163 | return; | 163 | return; |
164 | else | 164 | else |
165 | excllock = true; | 165 | excllock = true; |
166 | 166 | ||
167 | m_timer-> stop ( ); | 167 | m_timer-> stop ( ); |
168 | 168 | ||
169 | QCString type = "plain"; | 169 | QCString type = "plain"; |
170 | QString txt = QApplication::clipboard ( )-> text ( type ); | 170 | QString txt = QApplication::clipboard ( )-> text ( type ); |
171 | 171 | ||
172 | if ( !txt. isEmpty ( ) && !m_history. contains ( txt )) { | 172 | if ( !txt. isEmpty ( ) && !m_history. contains ( txt )) { |
173 | m_history. append ( txt ); | 173 | m_history. append ( txt ); |
174 | 174 | ||
175 | if ( m_history. count ( ) > 5 ) | 175 | if ( m_history. count ( ) > 5 ) |
176 | m_history. remove ( m_history. begin ( )); | 176 | m_history. remove ( m_history. begin ( )); |
177 | 177 | ||
178 | m_dirty = true; | 178 | m_dirty = true; |
179 | } | 179 | } |
180 | 180 | ||
181 | m_timer-> start ( 1500, true ); | 181 | m_timer-> start ( 1500, true ); |
182 | 182 | ||
183 | excllock = false; | 183 | excllock = false; |
184 | } | 184 | } |
185 | 185 | ||
186 | Q_EXPORT_INTERFACE() | 186 | Q_EXPORT_INTERFACE() |
187 | { | 187 | { |
188 | Q_CREATE_INSTANCE( OTaskbarAppletWrapper<ClipboardApplet> ); | 188 | Q_CREATE_INSTANCE( OTaskbarAppletWrapper<ClipboardApplet> ); |
189 | } | 189 | } |
diff --git a/core/applets/clockapplet/clock.cpp b/core/applets/clockapplet/clock.cpp index 9fead03..120a019 100644 --- a/core/applets/clockapplet/clock.cpp +++ b/core/applets/clockapplet/clock.cpp | |||
@@ -1,121 +1,121 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "clock.h" | 21 | #include "clock.h" |
22 | 22 | ||
23 | #include <opie2/otaskbarapplet.h> | 23 | #include <opie2/otaskbarapplet.h> |
24 | #include <qpe/qpeapplication.h> | 24 | #include <qpe/qpeapplication.h> |
25 | #include <qpe/qcopenvelope_qws.h> | 25 | #include <qpe/qcopenvelope_qws.h> |
26 | #include <qpe/config.h> | 26 | #include <qpe/config.h> |
27 | 27 | ||
28 | LauncherClock::LauncherClock( QWidget *parent ) : QLabel( parent ) | 28 | LauncherClock::LauncherClock( QWidget *parent ) : QLabel( parent ) |
29 | { | 29 | { |
30 | // If you want a sunken border around the clock do this: | 30 | // If you want a sunken border around the clock do this: |
31 | // setFrameStyle( QFrame::Panel | QFrame::Sunken ); | 31 | // setFrameStyle( QFrame::Panel | QFrame::Sunken ); |
32 | //setFont( QFont( "Helvetica", , QFont::Normal ) ); | 32 | //setFont( QFont( "Helvetica", , QFont::Normal ) ); |
33 | connect( qApp, SIGNAL( timeChanged() ), this, SLOT( updateTime( ) ) ); | 33 | connect( qApp, SIGNAL( timeChanged() ), this, SLOT( updateTime() ) ); |
34 | connect( qApp, SIGNAL( clockChanged( bool ) ), | 34 | connect( qApp, SIGNAL( clockChanged(bool) ), |
35 | this, SLOT( slotClockChanged( bool ) ) ); | 35 | this, SLOT( slotClockChanged(bool) ) ); |
36 | readConfig(); | 36 | readConfig(); |
37 | timerId = 0; | 37 | timerId = 0; |
38 | timerEvent( 0 ); | 38 | timerEvent( 0 ); |
39 | show(); | 39 | show(); |
40 | } | 40 | } |
41 | 41 | ||
42 | int LauncherClock::position() | 42 | int LauncherClock::position() |
43 | { | 43 | { |
44 | return 10; | 44 | return 10; |
45 | } | 45 | } |
46 | 46 | ||
47 | void LauncherClock::readConfig() { | 47 | void LauncherClock::readConfig() { |
48 | Config config( "qpe" ); | 48 | Config config( "qpe" ); |
49 | config.setGroup( "Time" ); | 49 | config.setGroup( "Time" ); |
50 | ampmFormat = config.readBoolEntry( "AMPM", TRUE ); | 50 | ampmFormat = config.readBoolEntry( "AMPM", TRUE ); |
51 | config.setGroup( "Date" ); | 51 | config.setGroup( "Date" ); |
52 | format = config.readNumEntry("ClockApplet",0); | 52 | format = config.readNumEntry("ClockApplet",0); |
53 | } | 53 | } |
54 | 54 | ||
55 | void LauncherClock::mouseReleaseEvent( QMouseEvent * ) | 55 | void LauncherClock::mouseReleaseEvent( QMouseEvent * ) |
56 | { | 56 | { |
57 | QCString setTimeApp; | 57 | QCString setTimeApp; |
58 | setTimeApp="systemtime"; | 58 | setTimeApp="systemtime"; |
59 | QCopEnvelope e("QPE/Application/"+setTimeApp, "raise()"); | 59 | QCopEnvelope e("QPE/Application/"+setTimeApp, "raise()"); |
60 | } | 60 | } |
61 | 61 | ||
62 | 62 | ||
63 | void LauncherClock::timerEvent( QTimerEvent *e ) | 63 | void LauncherClock::timerEvent( QTimerEvent *e ) |
64 | { | 64 | { |
65 | if ( !e || e->timerId() == timerId ) { | 65 | if ( !e || e->timerId() == timerId ) { |
66 | killTimer( timerId ); | 66 | killTimer( timerId ); |
67 | changeTime(); | 67 | changeTime(); |
68 | QTime t = QTime::currentTime(); | 68 | QTime t = QTime::currentTime(); |
69 | int ms = (60 - t.second())*1000 - t.msec(); | 69 | int ms = (60 - t.second())*1000 - t.msec(); |
70 | timerId = startTimer( ms ); | 70 | timerId = startTimer( ms ); |
71 | } else { | 71 | } else { |
72 | QLabel::timerEvent( e ); | 72 | QLabel::timerEvent( e ); |
73 | } | 73 | } |
74 | } | 74 | } |
75 | 75 | ||
76 | void LauncherClock::updateTime( void ) | 76 | void LauncherClock::updateTime( void ) |
77 | { | 77 | { |
78 | changeTime(); | 78 | changeTime(); |
79 | } | 79 | } |
80 | 80 | ||
81 | void LauncherClock::changeTime( void ) | 81 | void LauncherClock::changeTime( void ) |
82 | { | 82 | { |
83 | QTime tm = QDateTime::currentDateTime().time(); | 83 | QTime tm = QDateTime::currentDateTime().time(); |
84 | QString s; | 84 | QString s; |
85 | if( ampmFormat ) { | 85 | if( ampmFormat ) { |
86 | int hour = tm.hour(); | 86 | int hour = tm.hour(); |
87 | if (hour == 0) | 87 | if (hour == 0) |
88 | hour = 12; | 88 | hour = 12; |
89 | if (hour > 12) | 89 | if (hour > 12) |
90 | hour -= 12; | 90 | hour -= 12; |
91 | s.sprintf( "%2d:%02d %s", hour, tm.minute(), | 91 | s.sprintf( "%2d:%02d %s", hour, tm.minute(), |
92 | (tm.hour() >= 12) ? "PM" : "AM" ); | 92 | (tm.hour() >= 12) ? "PM" : "AM" ); |
93 | } else | 93 | } else |
94 | s.sprintf( "%2d:%02d", tm.hour(), tm.minute() ); | 94 | s.sprintf( "%2d:%02d", tm.hour(), tm.minute() ); |
95 | 95 | ||
96 | if (format==1) { | 96 | if (format==1) { |
97 | QDate dm = QDate::currentDate(); | 97 | QDate dm = QDate::currentDate(); |
98 | QString d; | 98 | QString d; |
99 | d.sprintf("%d/%d ", dm.day(), dm.month()); | 99 | d.sprintf("%d/%d ", dm.day(), dm.month()); |
100 | setText( d+s ); | 100 | setText( d+s ); |
101 | } else if (format==2) { | 101 | } else if (format==2) { |
102 | QDate dm = QDate::currentDate(); | 102 | QDate dm = QDate::currentDate(); |
103 | QString d; | 103 | QString d; |
104 | d.sprintf("%d/%d ", dm.month(), dm.day()); | 104 | d.sprintf("%d/%d ", dm.month(), dm.day()); |
105 | setText( d+s ); | 105 | setText( d+s ); |
106 | } else { | 106 | } else { |
107 | setText( s ); | 107 | setText( s ); |
108 | } | 108 | } |
109 | } | 109 | } |
110 | 110 | ||
111 | void LauncherClock::slotClockChanged( bool pm ) | 111 | void LauncherClock::slotClockChanged( bool pm ) |
112 | { | 112 | { |
113 | readConfig(); | 113 | readConfig(); |
114 | updateTime(); | 114 | updateTime(); |
115 | } | 115 | } |
116 | 116 | ||
117 | Q_EXPORT_INTERFACE() | 117 | Q_EXPORT_INTERFACE() |
118 | { | 118 | { |
119 | Q_CREATE_INSTANCE( OTaskbarAppletWrapper<LauncherClock> ); | 119 | Q_CREATE_INSTANCE( OTaskbarAppletWrapper<LauncherClock> ); |
120 | } | 120 | } |
121 | 121 | ||
diff --git a/core/applets/irdaapplet/irda.cpp b/core/applets/irdaapplet/irda.cpp index afc0592..dde8050 100644 --- a/core/applets/irdaapplet/irda.cpp +++ b/core/applets/irdaapplet/irda.cpp | |||
@@ -1,196 +1,196 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2002 David Woodhouse <dwmw2@infradead.org> | 2 | ** Copyright (C) 2002 David Woodhouse <dwmw2@infradead.org> |
3 | ** Max Reiss <harlekin@handhelds.org> [trivial stuff] | 3 | ** Max Reiss <harlekin@handhelds.org> [trivial stuff] |
4 | ** Robert Griebl <sandman@handhelds.org> | 4 | ** Robert Griebl <sandman@handhelds.org> |
5 | ** Holger Freyther <zecke@handhelds.org> QCOP Interface | 5 | ** Holger Freyther <zecke@handhelds.org> QCOP Interface |
6 | ** | 6 | ** |
7 | ** This file may be distributed and/or modified under the terms of the | 7 | ** This file may be distributed and/or modified under the terms of the |
8 | ** GNU General Public License version 2 as published by the Free Software | 8 | ** GNU General Public License version 2 as published by the Free Software |
9 | ** Foundation and appearing in the file LICENSE.GPL included in the | 9 | ** Foundation and appearing in the file LICENSE.GPL included in the |
10 | ** packaging of this file. | 10 | ** packaging of this file. |
11 | ** | 11 | ** |
12 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 12 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
13 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 13 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
14 | ** | 14 | ** |
15 | **********************************************************************/ | 15 | **********************************************************************/ |
16 | 16 | ||
17 | #include "irda.h" | 17 | #include "irda.h" |
18 | 18 | ||
19 | /* OPIE */ | 19 | /* OPIE */ |
20 | #include <opie2/otaskbarapplet.h> | 20 | #include <opie2/otaskbarapplet.h> |
21 | #include <qpe/resource.h> | 21 | #include <qpe/resource.h> |
22 | #include <qpe/qcopenvelope_qws.h> | 22 | #include <qpe/qcopenvelope_qws.h> |
23 | 23 | ||
24 | /* QT */ | 24 | /* QT */ |
25 | #include <qpainter.h> | 25 | #include <qpainter.h> |
26 | #include <qfile.h> | 26 | #include <qfile.h> |
27 | #include <qtimer.h> | 27 | #include <qtimer.h> |
28 | #include <qtextstream.h> | 28 | #include <qtextstream.h> |
29 | 29 | ||
30 | /* STD */ | 30 | /* STD */ |
31 | #include <unistd.h> | 31 | #include <unistd.h> |
32 | #include <net/if.h> | 32 | #include <net/if.h> |
33 | #include <netinet/in.h> | 33 | #include <netinet/in.h> |
34 | #include <sys/types.h> | 34 | #include <sys/types.h> |
35 | #include <sys/socket.h> | 35 | #include <sys/socket.h> |
36 | #include <sys/ioctl.h> | 36 | #include <sys/ioctl.h> |
37 | 37 | ||
38 | //=========================================================================== | 38 | //=========================================================================== |
39 | 39 | ||
40 | IrdaApplet::IrdaApplet ( QWidget *parent, const char *name ) | 40 | IrdaApplet::IrdaApplet ( QWidget *parent, const char *name ) |
41 | : QWidget ( parent, name ) | 41 | : QWidget ( parent, name ) |
42 | { | 42 | { |
43 | setFixedHeight ( 18 ); | 43 | setFixedHeight ( 18 ); |
44 | setFixedWidth ( 14 ); | 44 | setFixedWidth ( 14 ); |
45 | 45 | ||
46 | m_sockfd = ::socket ( PF_INET, SOCK_DGRAM, IPPROTO_IP ); | 46 | m_sockfd = ::socket ( PF_INET, SOCK_DGRAM, IPPROTO_IP ); |
47 | 47 | ||
48 | m_irdaOnPixmap = Resource::loadPixmap( "irdaapplet/irdaon" ); | 48 | m_irdaOnPixmap = Resource::loadPixmap( "irdaapplet/irdaon" ); |
49 | m_irdaOffPixmap = Resource::loadPixmap( "irdaapplet/irdaoff" ); | 49 | m_irdaOffPixmap = Resource::loadPixmap( "irdaapplet/irdaoff" ); |
50 | m_irdaDiscoveryOnPixmap = Resource::loadPixmap( "irdaapplet/magglass" ); | 50 | m_irdaDiscoveryOnPixmap = Resource::loadPixmap( "irdaapplet/magglass" ); |
51 | m_receiveActivePixmap = Resource::loadPixmap( "irdaapplet/receive" ); | 51 | m_receiveActivePixmap = Resource::loadPixmap( "irdaapplet/receive" ); |
52 | 52 | ||
53 | m_irda_active = false; | 53 | m_irda_active = false; |
54 | m_irda_discovery_active = false; | 54 | m_irda_discovery_active = false; |
55 | m_receive_active = false; | 55 | m_receive_active = false; |
56 | m_receive_state_changed = false; | 56 | m_receive_state_changed = false; |
57 | m_popup = 0; | 57 | m_popup = 0; |
58 | m_wasOn = false; | 58 | m_wasOn = false; |
59 | m_wasDiscover = false; | 59 | m_wasDiscover = false; |
60 | 60 | ||
61 | QCopChannel* chan = new QCopChannel("QPE/IrDaApplet", this ); | 61 | QCopChannel* chan = new QCopChannel("QPE/IrDaApplet", this ); |
62 | connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), | 62 | connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), |
63 | this, SLOT(slotMessage(const QCString&, const QByteArray& ) ) ); | 63 | this, SLOT(slotMessage(const QCString&,const QByteArray&) ) ); |
64 | } | 64 | } |
65 | 65 | ||
66 | int IrdaApplet::position() | 66 | int IrdaApplet::position() |
67 | { | 67 | { |
68 | return 6; | 68 | return 6; |
69 | } | 69 | } |
70 | 70 | ||
71 | void IrdaApplet::show() | 71 | void IrdaApplet::show() |
72 | { | 72 | { |
73 | QWidget::show ( ); | 73 | QWidget::show ( ); |
74 | startTimer ( 2000 ); | 74 | startTimer ( 2000 ); |
75 | } | 75 | } |
76 | 76 | ||
77 | IrdaApplet::~IrdaApplet() | 77 | IrdaApplet::~IrdaApplet() |
78 | { | 78 | { |
79 | if ( m_sockfd >= 0 ) | 79 | if ( m_sockfd >= 0 ) |
80 | ::close ( m_sockfd ); | 80 | ::close ( m_sockfd ); |
81 | } | 81 | } |
82 | 82 | ||
83 | void IrdaApplet::popup ( QString message, QString icon ) | 83 | void IrdaApplet::popup ( QString message, QString icon ) |
84 | { | 84 | { |
85 | if ( !m_popup ) | 85 | if ( !m_popup ) |
86 | m_popup = new QPopupMenu ( this ); | 86 | m_popup = new QPopupMenu ( this ); |
87 | 87 | ||
88 | m_popup-> clear ( ); | 88 | m_popup-> clear ( ); |
89 | 89 | ||
90 | if ( icon. isEmpty ( )) | 90 | if ( icon. isEmpty ( )) |
91 | m_popup-> insertItem ( message, 0 ); | 91 | m_popup-> insertItem ( message, 0 ); |
92 | else | 92 | else |
93 | m_popup-> insertItem ( QIconSet ( Resource::loadPixmap ( icon )), message, 0 ); | 93 | m_popup-> insertItem ( QIconSet ( Resource::loadPixmap ( icon )), message, 0 ); |
94 | 94 | ||
95 | QPoint p = mapToGlobal ( QPoint ( 0, 0 )); | 95 | QPoint p = mapToGlobal ( QPoint ( 0, 0 )); |
96 | QSize s = m_popup-> sizeHint ( ); | 96 | QSize s = m_popup-> sizeHint ( ); |
97 | m_popup-> popup ( QPoint ( p. x ( ) + ( width ( ) / 2 ) - ( s. width ( ) / 2 ), | 97 | m_popup-> popup ( QPoint ( p. x ( ) + ( width ( ) / 2 ) - ( s. width ( ) / 2 ), |
98 | p. y ( ) - s. height ( ))); | 98 | p. y ( ) - s. height ( ))); |
99 | 99 | ||
100 | QTimer::singleShot ( 2000, this, SLOT( popupTimeout ( ))); | 100 | QTimer::singleShot ( 2000, this, SLOT( popupTimeout())); |
101 | } | 101 | } |
102 | 102 | ||
103 | void IrdaApplet::popupTimeout ( ) | 103 | void IrdaApplet::popupTimeout ( ) |
104 | { | 104 | { |
105 | m_popup-> hide ( ); | 105 | m_popup-> hide ( ); |
106 | } | 106 | } |
107 | 107 | ||
108 | bool IrdaApplet::checkIrdaStatus ( ) | 108 | bool IrdaApplet::checkIrdaStatus ( ) |
109 | { | 109 | { |
110 | struct ifreq ifr; | 110 | struct ifreq ifr; |
111 | strcpy ( ifr. ifr_name, "irda0" ); | 111 | strcpy ( ifr. ifr_name, "irda0" ); |
112 | 112 | ||
113 | if ( ::ioctl ( m_sockfd, SIOCGIFFLAGS, &ifr ) < 0 ) | 113 | if ( ::ioctl ( m_sockfd, SIOCGIFFLAGS, &ifr ) < 0 ) |
114 | return false; | 114 | return false; |
115 | 115 | ||
116 | return ( ifr. ifr_flags & IFF_UP ); | 116 | return ( ifr. ifr_flags & IFF_UP ); |
117 | } | 117 | } |
118 | 118 | ||
119 | bool IrdaApplet::setIrdaStatus ( bool b ) | 119 | bool IrdaApplet::setIrdaStatus ( bool b ) |
120 | { | 120 | { |
121 | struct ifreq ifr; | 121 | struct ifreq ifr; |
122 | strcpy ( ifr. ifr_name, "irda0" ); | 122 | strcpy ( ifr. ifr_name, "irda0" ); |
123 | 123 | ||
124 | if ( ::ioctl ( m_sockfd, SIOCGIFFLAGS, &ifr ) < 0 ) | 124 | if ( ::ioctl ( m_sockfd, SIOCGIFFLAGS, &ifr ) < 0 ) |
125 | return false; | 125 | return false; |
126 | 126 | ||
127 | if ( b ) { | 127 | if ( b ) { |
128 | ifr. ifr_flags |= IFF_UP; | 128 | ifr. ifr_flags |= IFF_UP; |
129 | } | 129 | } |
130 | else { | 130 | else { |
131 | setIrdaDiscoveryStatus ( 0 ); | 131 | setIrdaDiscoveryStatus ( 0 ); |
132 | setIrdaReceiveStatus ( 0 ); | 132 | setIrdaReceiveStatus ( 0 ); |
133 | ifr. ifr_flags &= ~IFF_UP; | 133 | ifr. ifr_flags &= ~IFF_UP; |
134 | } | 134 | } |
135 | 135 | ||
136 | if ( ::ioctl ( m_sockfd, SIOCSIFFLAGS, &ifr ) < 0 ) | 136 | if ( ::ioctl ( m_sockfd, SIOCSIFFLAGS, &ifr ) < 0 ) |
137 | return false; | 137 | return false; |
138 | 138 | ||
139 | return true; | 139 | return true; |
140 | } | 140 | } |
141 | 141 | ||
142 | bool IrdaApplet::checkIrdaDiscoveryStatus ( ) | 142 | bool IrdaApplet::checkIrdaDiscoveryStatus ( ) |
143 | { | 143 | { |
144 | QFile discovery ( "/proc/sys/net/irda/discovery" ); | 144 | QFile discovery ( "/proc/sys/net/irda/discovery" ); |
145 | 145 | ||
146 | QString streamIn = "0"; | 146 | QString streamIn = "0"; |
147 | 147 | ||
148 | if ( discovery. open ( IO_ReadOnly )) { | 148 | if ( discovery. open ( IO_ReadOnly )) { |
149 | QTextStream stream ( &discovery ); | 149 | QTextStream stream ( &discovery ); |
150 | streamIn = stream. read ( ); | 150 | streamIn = stream. read ( ); |
151 | } | 151 | } |
152 | 152 | ||
153 | return streamIn. toInt ( ) > 0; | 153 | return streamIn. toInt ( ) > 0; |
154 | } | 154 | } |
155 | 155 | ||
156 | 156 | ||
157 | bool IrdaApplet::setIrdaDiscoveryStatus ( bool d ) | 157 | bool IrdaApplet::setIrdaDiscoveryStatus ( bool d ) |
158 | { | 158 | { |
159 | QFile discovery ( "/proc/sys/net/irda/discovery" ); | 159 | QFile discovery ( "/proc/sys/net/irda/discovery" ); |
160 | 160 | ||
161 | if ( discovery. open ( IO_WriteOnly | IO_Raw )) { | 161 | if ( discovery. open ( IO_WriteOnly | IO_Raw )) { |
162 | discovery.putch ( d ? '1' : '0' ); | 162 | discovery.putch ( d ? '1' : '0' ); |
163 | return true; | 163 | return true; |
164 | } | 164 | } |
165 | return false; | 165 | return false; |
166 | } | 166 | } |
167 | 167 | ||
168 | 168 | ||
169 | bool IrdaApplet::setIrdaReceiveStatus ( bool d ) | 169 | bool IrdaApplet::setIrdaReceiveStatus ( bool d ) |
170 | { | 170 | { |
171 | QCopEnvelope e ( "QPE/Obex", "receive(int)" ); | 171 | QCopEnvelope e ( "QPE/Obex", "receive(int)" ); |
172 | e << ( d ? 1 : 0 ); | 172 | e << ( d ? 1 : 0 ); |
173 | 173 | ||
174 | m_receive_active = d; | 174 | m_receive_active = d; |
175 | m_receive_state_changed = true; | 175 | m_receive_state_changed = true; |
176 | 176 | ||
177 | return true; | 177 | return true; |
178 | } | 178 | } |
179 | 179 | ||
180 | 180 | ||
181 | void IrdaApplet::showDiscovered ( ) | 181 | void IrdaApplet::showDiscovered ( ) |
182 | { | 182 | { |
183 | //static Sound snd_found ( "irdaapplet/irdaon" ); | 183 | //static Sound snd_found ( "irdaapplet/irdaon" ); |
184 | //static Sound snd_lost ( "irdaapplet/irdaoff" ); | 184 | //static Sound snd_lost ( "irdaapplet/irdaoff" ); |
185 | 185 | ||
186 | QFile discovery ( "/proc/net/irda/discovery" ); | 186 | QFile discovery ( "/proc/net/irda/discovery" ); |
187 | 187 | ||
188 | if ( discovery. open ( IO_ReadOnly )) { | 188 | if ( discovery. open ( IO_ReadOnly )) { |
189 | bool qcopsend = false; | 189 | bool qcopsend = false; |
190 | 190 | ||
191 | QString discoveredDevice; | 191 | QString discoveredDevice; |
192 | QString deviceAddr; | 192 | QString deviceAddr; |
193 | 193 | ||
194 | // since it is /proc we _must_ use QTextStream | 194 | // since it is /proc we _must_ use QTextStream |
195 | QStringList list = QStringList::split ( "\n", QTextStream ( &discovery ). read ( )); | 195 | QStringList list = QStringList::split ( "\n", QTextStream ( &discovery ). read ( )); |
196 | 196 | ||
diff --git a/core/applets/multikeyapplet/multikey.cpp b/core/applets/multikeyapplet/multikey.cpp index b17498d..fc5f093 100644 --- a/core/applets/multikeyapplet/multikey.cpp +++ b/core/applets/multikeyapplet/multikey.cpp | |||
@@ -1,124 +1,124 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2004 Anton Kachalov mouse@altlinux.ru | 2 | ** Copyright (C) 2004 Anton Kachalov mouse@altlinux.ru |
3 | ** All rights reserved. | 3 | ** All rights reserved. |
4 | ** | 4 | ** |
5 | ** This file may be distributed and/or modified under the terms of the | 5 | ** This file may be distributed and/or modified under the terms of the |
6 | ** GNU General Public License version 2 as published by the Free Software | 6 | ** GNU General Public License version 2 as published by the Free Software |
7 | ** Foundation and appearing in the file LICENSE.GPL included in the | 7 | ** Foundation and appearing in the file LICENSE.GPL included in the |
8 | ** packaging of this file. | 8 | ** packaging of this file. |
9 | ** | 9 | ** |
10 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 10 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
11 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 11 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
12 | ** | 12 | ** |
13 | **********************************************************************/ | 13 | **********************************************************************/ |
14 | 14 | ||
15 | #include "multikey.h" | 15 | #include "multikey.h" |
16 | 16 | ||
17 | /* OPIE */ | 17 | /* OPIE */ |
18 | #include <opie2/otaskbarapplet.h> | 18 | #include <opie2/otaskbarapplet.h> |
19 | #include <qpe/qcopenvelope_qws.h> | 19 | #include <qpe/qcopenvelope_qws.h> |
20 | 20 | ||
21 | /* QT */ | 21 | /* QT */ |
22 | #include <qdir.h> | 22 | #include <qdir.h> |
23 | 23 | ||
24 | Multikey::Multikey(QWidget *parent) : QLabel(parent), popupMenu(this), current("EN") | 24 | Multikey::Multikey(QWidget *parent) : QLabel(parent), popupMenu(this), current("EN") |
25 | { | 25 | { |
26 | QCopChannel* swChannel = new QCopChannel("MultiKey/Switcher", this); | 26 | QCopChannel* swChannel = new QCopChannel("MultiKey/Switcher", this); |
27 | connect( swChannel, SIGNAL(received(const QCString &, const QByteArray &)), | 27 | connect( swChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
28 | this, SLOT(message(const QCString &, const QByteArray &))); | 28 | this, SLOT(message(const QCString&,const QByteArray&))); |
29 | 29 | ||
30 | setFont( QFont( "Helvetica", 10, QFont::Normal ) ); | 30 | setFont( QFont( "Helvetica", 10, QFont::Normal ) ); |
31 | QPEApplication::setStylusOperation(this, QPEApplication::RightOnHold); | 31 | QPEApplication::setStylusOperation(this, QPEApplication::RightOnHold); |
32 | lang = 0; | 32 | lang = 0; |
33 | QCopEnvelope e("MultiKey/Keyboard", "getmultikey()"); | 33 | QCopEnvelope e("MultiKey/Keyboard", "getmultikey()"); |
34 | setText("EN"); | 34 | setText("EN"); |
35 | popupMenu.insertItem("EN", 0); | 35 | popupMenu.insertItem("EN", 0); |
36 | show(); | 36 | show(); |
37 | } | 37 | } |
38 | 38 | ||
39 | void Multikey::mousePressEvent(QMouseEvent *ev) | 39 | void Multikey::mousePressEvent(QMouseEvent *ev) |
40 | { | 40 | { |
41 | if (!sw_maps.count()) | 41 | if (!sw_maps.count()) |
42 | return; | 42 | return; |
43 | 43 | ||
44 | if (ev->button() == RightButton) { | 44 | if (ev->button() == RightButton) { |
45 | 45 | ||
46 | QPoint p = mapToGlobal(QPoint(0, 0)); | 46 | QPoint p = mapToGlobal(QPoint(0, 0)); |
47 | QSize s = popupMenu.sizeHint(); | 47 | QSize s = popupMenu.sizeHint(); |
48 | int opt = popupMenu.exec(QPoint(p.x() + (width() / 2) - (s.width() / 2), | 48 | int opt = popupMenu.exec(QPoint(p.x() + (width() / 2) - (s.width() / 2), |
49 | p.y() - s.height()), 0); | 49 | p.y() - s.height()), 0); |
50 | 50 | ||
51 | if (opt == -1) | 51 | if (opt == -1) |
52 | return; | 52 | return; |
53 | lang = opt; | 53 | lang = opt; |
54 | 54 | ||
55 | QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)"); | 55 | QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)"); |
56 | e << sw_maps[lang]; | 56 | e << sw_maps[lang]; |
57 | setText(labels[lang]); | 57 | setText(labels[lang]); |
58 | } | 58 | } |
59 | QWidget::mousePressEvent(ev); | 59 | QWidget::mousePressEvent(ev); |
60 | } | 60 | } |
61 | 61 | ||
62 | void Multikey::mouseReleaseEvent(QMouseEvent *ev) | 62 | void Multikey::mouseReleaseEvent(QMouseEvent *ev) |
63 | { | 63 | { |
64 | if (!sw_maps.count()) | 64 | if (!sw_maps.count()) |
65 | return; | 65 | return; |
66 | 66 | ||
67 | lang = lang < sw_maps.count()-1 ? lang+1 : 0; | 67 | lang = lang < sw_maps.count()-1 ? lang+1 : 0; |
68 | QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)"); | 68 | QCopEnvelope e("MultiKey/Keyboard", "setmultikey(QString)"); |
69 | //qDebug("Lang=%d, count=%d, lab=%s", lang, sw_maps.count(), labels[lang].ascii()); | 69 | //qDebug("Lang=%d, count=%d, lab=%s", lang, sw_maps.count(), labels[lang].ascii()); |
70 | e << sw_maps[lang]; | 70 | e << sw_maps[lang]; |
71 | setText(labels[lang]); | 71 | setText(labels[lang]); |
72 | } | 72 | } |
73 | 73 | ||
74 | void Multikey::message(const QCString &message, const QByteArray &data) | 74 | void Multikey::message(const QCString &message, const QByteArray &data) |
75 | { | 75 | { |
76 | if ( message == "setsw(QString,QString)" ) { | 76 | if ( message == "setsw(QString,QString)" ) { |
77 | 77 | ||
78 | QDataStream stream(data, IO_ReadOnly); | 78 | QDataStream stream(data, IO_ReadOnly); |
79 | QString maps, current_map; | 79 | QString maps, current_map; |
80 | stream >> maps >> current_map; | 80 | stream >> maps >> current_map; |
81 | QStringList sw = QStringList::split(QChar('|'), maps); | 81 | QStringList sw = QStringList::split(QChar('|'), maps); |
82 | sw.append(current_map); | 82 | sw.append(current_map); |
83 | 83 | ||
84 | QDir map_dir(QPEApplication::qpeDir() + "/share/multikey/", "*.keymap"); | 84 | QDir map_dir(QPEApplication::qpeDir() + "/share/multikey/", "*.keymap"); |
85 | lang = 0; | 85 | lang = 0; |
86 | labels.clear(); | 86 | labels.clear(); |
87 | sw_maps.clear(); | 87 | sw_maps.clear(); |
88 | popupMenu.clear(); | 88 | popupMenu.clear(); |
89 | 89 | ||
90 | for (uint i = 0; i < sw.count(); ++i) { | 90 | for (uint i = 0; i < sw.count(); ++i) { |
91 | QString keymap_map; | 91 | QString keymap_map; |
92 | if (sw[i][0] != '/') { | 92 | if (sw[i][0] != '/') { |
93 | 93 | ||
94 | keymap_map = map_dir.absPath() + "/" + sw[i]; | 94 | keymap_map = map_dir.absPath() + "/" + sw[i]; |
95 | } else { | 95 | } else { |
96 | 96 | ||
97 | if ((map_dir.exists(QFileInfo(sw[i]).fileName(), false) | 97 | if ((map_dir.exists(QFileInfo(sw[i]).fileName(), false) |
98 | && i != sw.count()-1) || !QFile::exists(sw[i])) { | 98 | && i != sw.count()-1) || !QFile::exists(sw[i])) { |
99 | continue; | 99 | continue; |
100 | } | 100 | } |
101 | keymap_map = sw[i]; | 101 | keymap_map = sw[i]; |
102 | } | 102 | } |
103 | 103 | ||
104 | QFile map(keymap_map); | 104 | QFile map(keymap_map); |
105 | if (map.open(IO_ReadOnly)) { | 105 | if (map.open(IO_ReadOnly)) { |
106 | QString line; | 106 | QString line; |
107 | 107 | ||
108 | map.readLine(line, 1024); | 108 | map.readLine(line, 1024); |
109 | while (!map.atEnd()) { | 109 | while (!map.atEnd()) { |
110 | 110 | ||
111 | if (line.find(QRegExp("^sw\\s*=\\s*")) != -1) { | 111 | if (line.find(QRegExp("^sw\\s*=\\s*")) != -1) { |
112 | 112 | ||
113 | if (i != sw.count()-1) { | 113 | if (i != sw.count()-1) { |
114 | if (keymap_map == current_map) { | 114 | if (keymap_map == current_map) { |
115 | lang = i; | 115 | lang = i; |
116 | } | 116 | } |
117 | sw_maps.append(keymap_map); | 117 | sw_maps.append(keymap_map); |
118 | labels.append(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace()); | 118 | labels.append(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace()); |
119 | popupMenu.insertItem(labels[labels.count()-1], labels.count()-1); | 119 | popupMenu.insertItem(labels[labels.count()-1], labels.count()-1); |
120 | } else { | 120 | } else { |
121 | current = line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace(); | 121 | current = line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace(); |
122 | } | 122 | } |
123 | break; | 123 | break; |
124 | } | 124 | } |
diff --git a/core/applets/rotateapplet/rotate.cpp b/core/applets/rotateapplet/rotate.cpp index dcbf809..0488c36 100644 --- a/core/applets/rotateapplet/rotate.cpp +++ b/core/applets/rotateapplet/rotate.cpp | |||
@@ -1,148 +1,148 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the OPIE Project | 2 | This file is part of the OPIE Project |
3 | Copyright (C) 2003 Maximilian Reiss <harlekin@handhelds.org> | 3 | Copyright (C) 2003 Maximilian Reiss <harlekin@handhelds.org> |
4 | Copyright (C) 2003 Greg Gilbert <ggilbert@treke.net> | 4 | Copyright (C) 2003 Greg Gilbert <ggilbert@treke.net> |
5 | =. Copyright (C) 2004 Michael Lauer <mickey@Vanille.de> | 5 | =. Copyright (C) 2004 Michael Lauer <mickey@Vanille.de> |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This library is free software; you can | 8 | _;:, .> :=|. This library is free software; you can |
9 | .> <, > . <= redistribute it and/or modify it under | 9 | .> <, > . <= redistribute it and/or modify it under |
10 | :=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : or (at your option) any later version. |
14 | .%+i> _;_. | 14 | .%+i> _;_. |
15 | .i_,=:_. -<s. This library is distributed in the hope that | 15 | .i_,=:_. -<s. This library is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=| MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=| MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. . .: details. | 21 | ++= -. . .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-= this library; see the file COPYING.LIB. | 25 | -- :-= this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include "rotate.h" | 31 | #include "rotate.h" |
32 | 32 | ||
33 | /* OPIE */ | 33 | /* OPIE */ |
34 | #include <opie/odevice.h> | 34 | #include <opie/odevice.h> |
35 | #include <qpe/config.h> | 35 | #include <qpe/config.h> |
36 | #include <qpe/power.h> | 36 | #include <qpe/power.h> |
37 | #include <qpe/qcopenvelope_qws.h> | 37 | #include <qpe/qcopenvelope_qws.h> |
38 | #include <qpe/resource.h> | 38 | #include <qpe/resource.h> |
39 | using namespace Opie; | 39 | using namespace Opie; |
40 | 40 | ||
41 | /* QT */ | 41 | /* QT */ |
42 | 42 | ||
43 | #include <time.h> | 43 | #include <time.h> |
44 | 44 | ||
45 | RotateApplet::RotateApplet() | 45 | RotateApplet::RotateApplet() |
46 | :QObject( 0, "RotateApplet" ), m_flipped( false ) | 46 | :QObject( 0, "RotateApplet" ), m_flipped( false ) |
47 | { | 47 | { |
48 | 48 | ||
49 | #if !defined(QT_NO_COP) | 49 | #if !defined(QT_NO_COP) |
50 | QCopChannel *rotateChannel = new QCopChannel( "QPE/Rotation" , this ); | 50 | QCopChannel *rotateChannel = new QCopChannel( "QPE/Rotation" , this ); |
51 | connect ( rotateChannel, SIGNAL( received( const QCString &, const QByteArray &) ), | 51 | connect ( rotateChannel, SIGNAL( received(const QCString&,const QByteArray&) ), |
52 | this, SLOT ( channelReceived( const QCString &, const QByteArray &) ) ); | 52 | this, SLOT ( channelReceived(const QCString&,const QByteArray&) ) ); |
53 | #endif | 53 | #endif |
54 | 54 | ||
55 | } | 55 | } |
56 | 56 | ||
57 | RotateApplet::~RotateApplet ( ) | 57 | RotateApplet::~RotateApplet ( ) |
58 | {} | 58 | {} |
59 | 59 | ||
60 | /** | 60 | /** |
61 | * Qcop receive method. | 61 | * Qcop receive method. |
62 | */ | 62 | */ |
63 | void RotateApplet::channelReceived( const QCString &msg, const QByteArray & data ) | 63 | void RotateApplet::channelReceived( const QCString &msg, const QByteArray & data ) |
64 | { | 64 | { |
65 | qDebug( "RotateApplet::channelReceived( '%s' )", (const char*) msg ); | 65 | qDebug( "RotateApplet::channelReceived( '%s' )", (const char*) msg ); |
66 | 66 | ||
67 | if ( ODevice::inst()->hasHingeSensor() ) | 67 | if ( ODevice::inst()->hasHingeSensor() ) |
68 | { | 68 | { |
69 | struct timespec interval; | 69 | struct timespec interval; |
70 | struct timespec remain; | 70 | struct timespec remain; |
71 | interval.tv_sec = 0; | 71 | interval.tv_sec = 0; |
72 | interval.tv_nsec = 600000; | 72 | interval.tv_nsec = 600000; |
73 | ::nanosleep( &interval, &remain ); | 73 | ::nanosleep( &interval, &remain ); |
74 | OHingeStatus status = ODevice::inst()->readHingeSensor(); | 74 | OHingeStatus status = ODevice::inst()->readHingeSensor(); |
75 | qDebug( "RotateApplet::readHingeSensor = %d", (int) status ); | 75 | qDebug( "RotateApplet::readHingeSensor = %d", (int) status ); |
76 | 76 | ||
77 | Config cfg( "apm" ); | 77 | Config cfg( "apm" ); |
78 | cfg.setGroup( PowerStatusManager::readStatus().acStatus() == PowerStatus::Online ? "AC" : "Battery" ); | 78 | cfg.setGroup( PowerStatusManager::readStatus().acStatus() == PowerStatus::Online ? "AC" : "Battery" ); |
79 | int action = cfg.readNumEntry( "CloseHingeAction", 0 ); | 79 | int action = cfg.readNumEntry( "CloseHingeAction", 0 ); |
80 | 80 | ||
81 | if ( status == CASE_CLOSED ) | 81 | if ( status == CASE_CLOSED ) |
82 | { | 82 | { |
83 | switch ( action ) | 83 | switch ( action ) |
84 | { | 84 | { |
85 | case 1: /* DISPLAY OFF */ ODevice::inst()->setDisplayBrightness( 0 ); break; | 85 | case 1: /* DISPLAY OFF */ ODevice::inst()->setDisplayBrightness( 0 ); break; |
86 | case 2: /* SUSPEND */ ODevice::inst()->suspend(); break; | 86 | case 2: /* SUSPEND */ ODevice::inst()->suspend(); break; |
87 | default: /* IGNORE */ break; | 87 | default: /* IGNORE */ break; |
88 | } | 88 | } |
89 | } | 89 | } |
90 | else /* status != CASE_CLOSED */ | 90 | else /* status != CASE_CLOSED */ |
91 | { | 91 | { |
92 | switch ( action ) | 92 | switch ( action ) |
93 | { | 93 | { |
94 | case 1: /* DISPLAY OFF */ ODevice::inst()->setDisplayBrightness( 127 ); break; | 94 | case 1: /* DISPLAY OFF */ ODevice::inst()->setDisplayBrightness( 127 ); break; |
95 | case 2: /* SUSPEND */ /* How to wake up the device from kernel? */; break; | 95 | case 2: /* SUSPEND */ /* How to wake up the device from kernel? */; break; |
96 | default: /* IGNORE */ break; | 96 | default: /* IGNORE */ break; |
97 | } | 97 | } |
98 | } | 98 | } |
99 | qDebug( "RotateApplet::switchAction %d performed.", cfg.readNumEntry( "CloseHingeAction", 0 ) ); | 99 | qDebug( "RotateApplet::switchAction %d performed.", cfg.readNumEntry( "CloseHingeAction", 0 ) ); |
100 | } | 100 | } |
101 | 101 | ||
102 | QDataStream stream( data, IO_ReadOnly ); | 102 | QDataStream stream( data, IO_ReadOnly ); |
103 | if ( msg == "flip()" ) | 103 | if ( msg == "flip()" ) |
104 | { | 104 | { |
105 | activated ( ); | 105 | activated ( ); |
106 | } | 106 | } |
107 | else if ( msg == "rotateDefault()") | 107 | else if ( msg == "rotateDefault()") |
108 | { | 108 | { |
109 | rotateDefault(); | 109 | rotateDefault(); |
110 | } | 110 | } |
111 | } | 111 | } |
112 | 112 | ||
113 | int RotateApplet::position() const | 113 | int RotateApplet::position() const |
114 | { | 114 | { |
115 | return 3; | 115 | return 3; |
116 | } | 116 | } |
117 | 117 | ||
118 | QString RotateApplet::name() const | 118 | QString RotateApplet::name() const |
119 | { | 119 | { |
120 | return tr( "Rotate shortcut" ); | 120 | return tr( "Rotate shortcut" ); |
121 | } | 121 | } |
122 | 122 | ||
123 | QString RotateApplet::text() const | 123 | QString RotateApplet::text() const |
124 | { | 124 | { |
125 | return tr( "Rotate" ); | 125 | return tr( "Rotate" ); |
126 | } | 126 | } |
127 | 127 | ||
128 | /*QString RotateApplet::tr( const char* s ) const | 128 | /*QString RotateApplet::tr( const char* s ) const |
129 | { | 129 | { |
130 | return qApp->translate( "RotateApplet", s, 0 ); | 130 | return qApp->translate( "RotateApplet", s, 0 ); |
131 | } | 131 | } |
132 | 132 | ||
133 | QString RotateApplet::tr( const char* s, const char* p ) const | 133 | QString RotateApplet::tr( const char* s, const char* p ) const |
134 | { | 134 | { |
135 | return qApp->translate( "RotateApplet", s, p ); | 135 | return qApp->translate( "RotateApplet", s, p ); |
136 | } | 136 | } |
137 | */ | 137 | */ |
138 | 138 | ||
139 | QIconSet RotateApplet::icon() const | 139 | QIconSet RotateApplet::icon() const |
140 | { | 140 | { |
141 | QPixmap pix; | 141 | QPixmap pix; |
142 | QImage img = Resource::loadImage( "Rotation" ); | 142 | QImage img = Resource::loadImage( "Rotation" ); |
143 | if ( !img.isNull() ) | 143 | if ( !img.isNull() ) |
144 | pix.convertFromImage( img.smoothScale( 14, 14 ) ); | 144 | pix.convertFromImage( img.smoothScale( 14, 14 ) ); |
145 | return pix; | 145 | return pix; |
146 | } | 146 | } |
147 | 147 | ||
148 | QPopupMenu* RotateApplet::popup(QWidget*) const | 148 | QPopupMenu* RotateApplet::popup(QWidget*) const |
diff --git a/core/applets/screenshotapplet/screenshot.cpp b/core/applets/screenshotapplet/screenshot.cpp index 5d6bce4..20e1c9b 100644 --- a/core/applets/screenshotapplet/screenshot.cpp +++ b/core/applets/screenshotapplet/screenshot.cpp | |||
@@ -206,195 +206,195 @@ static char * snapshot_xpm[] = { | |||
206 | "F.c #5A525E", | 206 | "F.c #5A525E", |
207 | "G.c #425868", | 207 | "G.c #425868", |
208 | "H.c #04448E", | 208 | "H.c #04448E", |
209 | "I.c #28828A", | 209 | "I.c #28828A", |
210 | "J.c #2D8593", | 210 | "J.c #2D8593", |
211 | "K.c #12427A", | 211 | "K.c #12427A", |
212 | "L.c #054696", | 212 | "L.c #054696", |
213 | "M.c #042B5E", | 213 | "M.c #042B5E", |
214 | "N.c #134F95", | 214 | "N.c #134F95", |
215 | "O.c #1E6ABB", | 215 | "O.c #1E6ABB", |
216 | "P.c #1A5E96", | 216 | "P.c #1A5E96", |
217 | "Q.c #022E67", | 217 | "Q.c #022E67", |
218 | "R.c #0C3E7C", | 218 | "R.c #0C3E7C", |
219 | "S.c #023E8A", | 219 | "S.c #023E8A", |
220 | "T.c #021A3E", | 220 | "T.c #021A3E", |
221 | " ", | 221 | " ", |
222 | " ", | 222 | " ", |
223 | " ", | 223 | " ", |
224 | " . + @ # + ", | 224 | " . + @ # + ", |
225 | " $ # % & * * = - # $ ", | 225 | " $ # % & * * = - # $ ", |
226 | "; > % @ = , ' ) ' ! ~ { % @ . ] ^ / ( ", | 226 | "; > % @ = , ' ) ' ! ~ { % @ . ] ^ / ( ", |
227 | "; + ' * ) _ ) ) ' : : ! { { % < . [ ( } ", | 227 | "; + ' * ) _ ) ) ' : : ! { { % < . [ ( } ", |
228 | "| @ 1 2 3 _ _ ) ' : : : : 4 5 6 6 # 7 8 } ", | 228 | "| @ 1 2 3 _ _ ) ' : : : : 4 5 6 6 # 7 8 } ", |
229 | "9 0 a b b b c _ ) : : ! ! ~ ~ 5 ~ d e f [ 8 g h h } ", | 229 | "9 0 a b b b c _ ) : : ! ! ~ ~ 5 ~ d e f [ 8 g h h } ", |
230 | "| i j k j l m n 3 ) : ! ! ! ~ o o o p 6 q f / r r r s ", | 230 | "| i j k j l m n 3 ) : ! ! ! ~ o o o p 6 q f / r r r s ", |
231 | "t u v w x y y z a 1 3 ' : ! ~ A A B A p = C D E F G ( s ", | 231 | "t u v w x y y z a 1 3 ' : ! ~ A A B A p = C D E F G ( s ", |
232 | "| u H I J K L M H k N 3 3 : ~ o o 5 O P Q R S T T U V W X Y ", | 232 | "| u H I J K L M H k N 3 3 : ~ o o 5 O P Q R S T T U V W X Y ", |
233 | "| Z ` J .....+.@.z #.3 _ 3 3 ) $.P W %.S &.*.*.&.S W Q P =.-. ", | 233 | "| Z ` J .....+.@.z #.3 _ 3 3 ) $.P W %.S &.*.*.&.S W Q P =.-. ", |
234 | ";.>.,.'.).!.!.).~.,.{.) : ) 3 ].h ^./.(._._._.:.<.[.g }.= & |. ", | 234 | ";.>.,.'.).!.!.).~.,.{.) : ) 3 ].h ^./.(._._._.:.<.[.g }.= & |. ", |
235 | ";.>.1.2.3.4.4.5.6.,.{._ : : : 7.8.9.0.a.b.b.c.d.} e.4 = 6 q # ", | 235 | ";.>.1.2.3.4.4.5.6.,.{._ : : : 7.8.9.0.a.b.b.c.d.} e.4 = 6 q # ", |
236 | ";.>.z f.g.h.i.j.k.l.N ) : ! ! 4 m.n.c.o.p.q.r.|.5 { d e e s.. ", | 236 | ";.>.z f.g.h.i.j.k.l.N ) : ! ! 4 m.n.c.o.p.q.r.|.5 { d e e s.. ", |
237 | "t Z l t.f.u.g.1.v.#.w.' : ! ~ ~ 7.|.n.x.y.z.A.A q - e e e B.> ", | 237 | "t Z l t.f.u.g.1.v.#.w.' : ! ~ ~ 7.|.n.x.y.z.A.A q - e e e B.> ", |
238 | "| 0 c k t.t.l l C.D.) * * ! 5 { B o E.F.F.G.= H.e e e e q B.. ", | 238 | "| 0 c k t.t.l l C.D.) * * ! 5 { B o E.F.F.G.= H.e e e e q B.. ", |
239 | "; + D.I.J.I.I.I.w.) : : * o K.7 - L.= O = }.6 6 e q q e q s.> ", | 239 | "; + D.I.J.I.I.I.w.) : : * o K.7 - L.= O = }.6 6 e q q e q s.> ", |
240 | "9 + ) ) ) ) ' ' , * : ! ! ! K.< . M.q 6 B N.{ d q e e e e s.9 ", | 240 | "9 + ) ) ) ) ' ' , * : ! ! ! K.< . M.q 6 B N.{ d q e e e e s.9 ", |
241 | "9 # O.) ) ' , , P.* ! ! ! ! = % . . M.e d p L.d B.B.e B.B.Q.9 ", | 241 | "9 # O.) ) ' , , P.* ! ! ! ! = % . . M.e d p L.d B.B.e B.B.Q.9 ", |
242 | "; < ' ' ' ' , , 4 4 ~ ! ! ~ ! 5 e q e e q A H.d q q e e B.Q.9 ", | 242 | "; < ' ' ' ' , , 4 4 ~ ! ! ~ ! 5 e q e e q A H.d q q e e B.Q.9 ", |
243 | "; $ R.K.5 4 4 ' ! ! 4 ~ ! ~ ~ ~ o { B o A A L.S.B.B.B.B.B.Q.> ", | 243 | "; $ R.K.5 4 4 ' ! ! 4 ~ ! ~ ~ ~ o { B o A A L.S.B.B.B.B.B.Q.> ", |
244 | " ] $ 0 R.= ' ' 4 4 5 4 5 5 o B o B p A A L.d e e B.B.B.Q.9 ", | 244 | " ] $ 0 R.= ' ' 4 4 5 4 5 5 o B o B p A A L.d e e B.B.B.Q.9 ", |
245 | " # + - { 4 4 ~ ! o { o L.p p p p p H.S.B.B.s.Q.Q.M.T. ", | 245 | " # + - { 4 4 ~ ! o { o L.p p p p p H.S.B.B.s.Q.Q.M.T. ", |
246 | " + s.6 B o o 5 B p L.p p L.p H.q B.Q.Q.Q.Q.M.; ", | 246 | " + s.6 B o o 5 B p L.p p L.p H.q B.Q.Q.Q.Q.M.; ", |
247 | " < # s.- B o B p p L.L.H.L.H.d B.Q.Q.Q.Q.Q.9 ", | 247 | " < # s.- B o B p p L.L.H.L.H.d B.Q.Q.Q.Q.Q.9 ", |
248 | " $ . s.d 6 B A p H.S.L.H.q B.Q.Q.M.M.. ; ", | 248 | " $ . s.d 6 B A p H.S.L.H.q B.Q.Q.M.M.. ; ", |
249 | " ; 9 . 6 L.p L.d L.H.d Q.M.M.. 9 ; ] ", | 249 | " ; 9 . 6 L.p L.d L.H.d Q.M.M.. 9 ; ] ", |
250 | " | > e L.d L.H.e M.. ; ] ] ", | 250 | " | > e L.d L.H.e M.. ; ] ] ", |
251 | " > 9 . S.Q.. ; ] ", | 251 | " > 9 . S.Q.. ; ] ", |
252 | " T.; ] "}; | 252 | " T.; ] "}; |
253 | 253 | ||
254 | static const char *SCAP_hostname = "www.handhelds.org"; | 254 | static const char *SCAP_hostname = "www.handhelds.org"; |
255 | static const int SCAP_port = 80; | 255 | static const int SCAP_port = 80; |
256 | 256 | ||
257 | 257 | ||
258 | ScreenshotControl::ScreenshotControl( QWidget *parent, const char *name ) | 258 | ScreenshotControl::ScreenshotControl( QWidget *parent, const char *name ) |
259 | : QFrame( parent, name, WDestructiveClose | WStyle_StaysOnTop | WType_Popup ) | 259 | : QFrame( parent, name, WDestructiveClose | WStyle_StaysOnTop | WType_Popup ) |
260 | { | 260 | { |
261 | setFrameStyle( QFrame::PopupPanel | QFrame::Raised ); | 261 | setFrameStyle( QFrame::PopupPanel | QFrame::Raised ); |
262 | QVBoxLayout *vbox = new QVBoxLayout ( this, 5, 3 ); | 262 | QVBoxLayout *vbox = new QVBoxLayout ( this, 5, 3 ); |
263 | QHBoxLayout *hbox; | 263 | QHBoxLayout *hbox; |
264 | 264 | ||
265 | hbox = new QHBoxLayout ( vbox ); | 265 | hbox = new QHBoxLayout ( vbox ); |
266 | 266 | ||
267 | QLabel *l = new QLabel ( tr( "Delay" ), this ); | 267 | QLabel *l = new QLabel ( tr( "Delay" ), this ); |
268 | hbox-> addWidget ( l ); | 268 | hbox-> addWidget ( l ); |
269 | 269 | ||
270 | delaySpin = new QSpinBox( 0, 60, 1, this, "Spinner" ); | 270 | delaySpin = new QSpinBox( 0, 60, 1, this, "Spinner" ); |
271 | delaySpin-> setButtonSymbols ( QSpinBox::PlusMinus ); | 271 | delaySpin-> setButtonSymbols ( QSpinBox::PlusMinus ); |
272 | delaySpin-> setSuffix ( tr( "sec" )); | 272 | delaySpin-> setSuffix ( tr( "sec" )); |
273 | delaySpin-> setFocusPolicy( QWidget::NoFocus ); | 273 | delaySpin-> setFocusPolicy( QWidget::NoFocus ); |
274 | delaySpin-> setValue ( 1 ); | 274 | delaySpin-> setValue ( 1 ); |
275 | hbox-> addWidget ( delaySpin ); | 275 | hbox-> addWidget ( delaySpin ); |
276 | 276 | ||
277 | saveNamedCheck = new QCheckBox ( tr( "Save named" ), this); | 277 | saveNamedCheck = new QCheckBox ( tr( "Save named" ), this); |
278 | saveNamedCheck-> setFocusPolicy ( QWidget::NoFocus ); | 278 | saveNamedCheck-> setFocusPolicy ( QWidget::NoFocus ); |
279 | vbox->addWidget( saveNamedCheck); | 279 | vbox->addWidget( saveNamedCheck); |
280 | 280 | ||
281 | vbox-> addSpacing ( 3 ); | 281 | vbox-> addSpacing ( 3 ); |
282 | 282 | ||
283 | l = new QLabel ( tr( "Save screenshot as..." ), this ); | 283 | l = new QLabel ( tr( "Save screenshot as..." ), this ); |
284 | vbox-> addWidget ( l, AlignCenter ); | 284 | vbox-> addWidget ( l, AlignCenter ); |
285 | 285 | ||
286 | hbox = new QHBoxLayout ( vbox ); | 286 | hbox = new QHBoxLayout ( vbox ); |
287 | 287 | ||
288 | grabItButton = new QPushButton( tr( "File" ), this, "GrabButton" ); | 288 | grabItButton = new QPushButton( tr( "File" ), this, "GrabButton" ); |
289 | grabItButton ->setFocusPolicy( QWidget::TabFocus ); | 289 | grabItButton ->setFocusPolicy( QWidget::TabFocus ); |
290 | hbox-> addWidget ( grabItButton ); | 290 | hbox-> addWidget ( grabItButton ); |
291 | 291 | ||
292 | scapButton = new QPushButton( tr( "Scap" ), this, "ScapButton" ); | 292 | scapButton = new QPushButton( tr( "Scap" ), this, "ScapButton" ); |
293 | scapButton ->setFocusPolicy( QWidget::TabFocus ); | 293 | scapButton ->setFocusPolicy( QWidget::TabFocus ); |
294 | hbox-> addWidget ( scapButton ); | 294 | hbox-> addWidget ( scapButton ); |
295 | 295 | ||
296 | setFixedSize ( sizeHint ( )); | 296 | setFixedSize ( sizeHint ( )); |
297 | setFocusPolicy ( QWidget::NoFocus ); | 297 | setFocusPolicy ( QWidget::NoFocus ); |
298 | 298 | ||
299 | 299 | ||
300 | grabTimer = new QTimer ( this, "grab timer"); | 300 | grabTimer = new QTimer ( this, "grab timer"); |
301 | 301 | ||
302 | connect ( grabTimer, SIGNAL( timeout ( )), this, SLOT( performGrab ( ))); | 302 | connect ( grabTimer, SIGNAL( timeout()), this, SLOT( performGrab())); |
303 | connect ( grabItButton, SIGNAL( clicked ( )), SLOT( slotGrab ( ))); | 303 | connect ( grabItButton, SIGNAL( clicked()), SLOT( slotGrab())); |
304 | connect ( scapButton, SIGNAL( clicked ( )), SLOT( slotScap ( ))); | 304 | connect ( scapButton, SIGNAL( clicked()), SLOT( slotScap())); |
305 | } | 305 | } |
306 | 306 | ||
307 | void ScreenshotControl::slotGrab() | 307 | void ScreenshotControl::slotGrab() |
308 | { | 308 | { |
309 | buttonPushed = 1; | 309 | buttonPushed = 1; |
310 | hide(); | 310 | hide(); |
311 | 311 | ||
312 | setFileName = FALSE; | 312 | setFileName = FALSE; |
313 | if ( saveNamedCheck->isChecked()) { | 313 | if ( saveNamedCheck->isChecked()) { |
314 | setFileName = TRUE; | 314 | setFileName = TRUE; |
315 | InputDialog *fileDlg; | 315 | InputDialog *fileDlg; |
316 | 316 | ||
317 | fileDlg = new InputDialog( 0 , tr("Name of screenshot "), TRUE, 0); | 317 | fileDlg = new InputDialog( 0 , tr("Name of screenshot "), TRUE, 0); |
318 | fileDlg->exec(); | 318 | fileDlg->exec(); |
319 | fileDlg->raise(); | 319 | fileDlg->raise(); |
320 | QString fileName, list; | 320 | QString fileName, list; |
321 | if ( fileDlg->result() == 1 ) { | 321 | if ( fileDlg->result() == 1 ) { |
322 | fileName = fileDlg->LineEdit1->text(); | 322 | fileName = fileDlg->LineEdit1->text(); |
323 | 323 | ||
324 | if (fileName.find("/", 0, TRUE) == -1) | 324 | if (fileName.find("/", 0, TRUE) == -1) |
325 | FileNamePath = QDir::homeDirPath() + "/Documents/image/png/" + fileName; | 325 | FileNamePath = QDir::homeDirPath() + "/Documents/image/png/" + fileName; |
326 | else | 326 | else |
327 | FileNamePath = fileName; | 327 | FileNamePath = fileName; |
328 | 328 | ||
329 | } | 329 | } |
330 | delete fileDlg; | 330 | delete fileDlg; |
331 | } | 331 | } |
332 | 332 | ||
333 | if ( delaySpin->value() ) | 333 | if ( delaySpin->value() ) |
334 | grabTimer->start( delaySpin->value() * 1000, true ); | 334 | grabTimer->start( delaySpin->value() * 1000, true ); |
335 | else | 335 | else |
336 | show(); | 336 | show(); |
337 | } | 337 | } |
338 | 338 | ||
339 | void ScreenshotControl::slotScap() | 339 | void ScreenshotControl::slotScap() |
340 | { | 340 | { |
341 | buttonPushed = 2; | 341 | buttonPushed = 2; |
342 | hide(); | 342 | hide(); |
343 | 343 | ||
344 | if ( delaySpin->value() ) | 344 | if ( delaySpin->value() ) |
345 | grabTimer->start( delaySpin->value() * 1000, true ); | 345 | grabTimer->start( delaySpin->value() * 1000, true ); |
346 | else | 346 | else |
347 | show(); | 347 | show(); |
348 | } | 348 | } |
349 | 349 | ||
350 | 350 | ||
351 | void ScreenshotControl::savePixmap() | 351 | void ScreenshotControl::savePixmap() |
352 | { | 352 | { |
353 | DocLnk lnk; | 353 | DocLnk lnk; |
354 | QString fileName; | 354 | QString fileName; |
355 | 355 | ||
356 | if ( setFileName) { | 356 | if ( setFileName) { |
357 | fileName = FileNamePath; | 357 | fileName = FileNamePath; |
358 | //not sure why this is needed here, but it forgets fileName | 358 | //not sure why this is needed here, but it forgets fileName |
359 | // if this is below the braces | 359 | // if this is below the braces |
360 | 360 | ||
361 | if (fileName.right(3) != "png") | 361 | if (fileName.right(3) != "png") |
362 | fileName = fileName + ".png"; | 362 | fileName = fileName + ".png"; |
363 | lnk.setFile(fileName); //sets File property | 363 | lnk.setFile(fileName); //sets File property |
364 | qDebug("saving file " + fileName); | 364 | qDebug("saving file " + fileName); |
365 | snapshot.save( fileName, "PNG"); | 365 | snapshot.save( fileName, "PNG"); |
366 | QFileInfo fi( fileName); | 366 | QFileInfo fi( fileName); |
367 | lnk.setName( fi.fileName()); //sets file name | 367 | lnk.setName( fi.fileName()); //sets file name |
368 | 368 | ||
369 | if (!lnk.writeLink()) | 369 | if (!lnk.writeLink()) |
370 | qDebug("Writing doclink did not work"); | 370 | qDebug("Writing doclink did not work"); |
371 | } | 371 | } |
372 | else { | 372 | else { |
373 | 373 | ||
374 | fileName = "sc_" + QDateTime::currentDateTime().toString(); | 374 | fileName = "sc_" + QDateTime::currentDateTime().toString(); |
375 | fileName.replace(QRegExp("'"), ""); | 375 | fileName.replace(QRegExp("'"), ""); |
376 | fileName.replace(QRegExp(" "), "_"); | 376 | fileName.replace(QRegExp(" "), "_"); |
377 | fileName.replace(QRegExp(":"), "."); | 377 | fileName.replace(QRegExp(":"), "."); |
378 | fileName.replace(QRegExp(","), ""); | 378 | fileName.replace(QRegExp(","), ""); |
379 | QString dirName = QDir::homeDirPath() + "/Documents/image/png/"; | 379 | QString dirName = QDir::homeDirPath() + "/Documents/image/png/"; |
380 | 380 | ||
381 | if ( !QDir( dirName).exists() ) { | 381 | if ( !QDir( dirName).exists() ) { |
382 | qDebug("making dir " + dirName); | 382 | qDebug("making dir " + dirName); |
383 | QString msg = "mkdir -p " + dirName; | 383 | QString msg = "mkdir -p " + dirName; |
384 | system(msg.latin1()); | 384 | system(msg.latin1()); |
385 | } | 385 | } |
386 | fileName = dirName + fileName; | 386 | fileName = dirName + fileName; |
387 | if (fileName.right(3) != "png") | 387 | if (fileName.right(3) != "png") |
388 | fileName = fileName + ".png"; | 388 | fileName = fileName + ".png"; |
389 | lnk.setFile(fileName); //sets File property | 389 | lnk.setFile(fileName); //sets File property |
390 | qDebug("saving file " + fileName); | 390 | qDebug("saving file " + fileName); |
391 | snapshot.save( fileName, "PNG"); | 391 | snapshot.save( fileName, "PNG"); |
392 | QFileInfo fi( fileName); | 392 | QFileInfo fi( fileName); |
393 | lnk.setName( fi.fileName()); //sets file name | 393 | lnk.setName( fi.fileName()); //sets file name |
394 | 394 | ||
395 | if (!lnk.writeLink()) | 395 | if (!lnk.writeLink()) |
396 | qDebug("Writing doclink did not work"); | 396 | qDebug("Writing doclink did not work"); |
397 | 397 | ||
398 | } | 398 | } |
399 | 399 | ||
400 | QPEApplication::beep(); | 400 | QPEApplication::beep(); |
diff --git a/core/applets/vmemo/vmemo.cpp b/core/applets/vmemo/vmemo.cpp index 563d110..27f6015 100644 --- a/core/applets/vmemo/vmemo.cpp +++ b/core/applets/vmemo/vmemo.cpp | |||
@@ -120,194 +120,194 @@ static char * vmemo_xpm[] = { | |||
120 | "f c #5B5B60", | 120 | "f c #5B5B60", |
121 | "g c #8A8A8F", | 121 | "g c #8A8A8F", |
122 | "h c #6B6B6E", | 122 | "h c #6B6B6E", |
123 | "i c #ADADB2", | 123 | "i c #ADADB2", |
124 | "j c #828289", | 124 | "j c #828289", |
125 | "k c #3E3E41", | 125 | "k c #3E3E41", |
126 | "l c #CFCFD7", | 126 | "l c #CFCFD7", |
127 | "m c #4C4C50", | 127 | "m c #4C4C50", |
128 | "n c #000000", | 128 | "n c #000000", |
129 | "o c #66666A", | 129 | "o c #66666A", |
130 | "p c #505054", | 130 | "p c #505054", |
131 | "q c #838388", | 131 | "q c #838388", |
132 | "r c #A1A1A7", | 132 | "r c #A1A1A7", |
133 | "s c #A9A9AE", | 133 | "s c #A9A9AE", |
134 | "t c #A8A8B0", | 134 | "t c #A8A8B0", |
135 | "u c #5E5E63", | 135 | "u c #5E5E63", |
136 | "v c #3A3A3E", | 136 | "v c #3A3A3E", |
137 | "w c #BDBDC6", | 137 | "w c #BDBDC6", |
138 | "x c #59595E", | 138 | "x c #59595E", |
139 | "y c #76767C", | 139 | "y c #76767C", |
140 | "z c #373738", | 140 | "z c #373738", |
141 | "A c #717174", | 141 | "A c #717174", |
142 | "B c #727278", | 142 | "B c #727278", |
143 | "C c #1C1C1E", | 143 | "C c #1C1C1E", |
144 | "D c #3C3C3F", | 144 | "D c #3C3C3F", |
145 | "E c #ADADB6", | 145 | "E c #ADADB6", |
146 | "F c #54555A", | 146 | "F c #54555A", |
147 | "G c #8B8C94", | 147 | "G c #8B8C94", |
148 | "H c #5A5A5F", | 148 | "H c #5A5A5F", |
149 | "I c #BBBBC3", | 149 | "I c #BBBBC3", |
150 | "J c #C4C4CB", | 150 | "J c #C4C4CB", |
151 | "K c #909098", | 151 | "K c #909098", |
152 | "L c #737379", | 152 | "L c #737379", |
153 | "M c #343437", | 153 | "M c #343437", |
154 | "N c #8F8F98", | 154 | "N c #8F8F98", |
155 | "O c #000407", | 155 | "O c #000407", |
156 | "P c #2D3137", | 156 | "P c #2D3137", |
157 | "Q c #B0B1BC", | 157 | "Q c #B0B1BC", |
158 | "R c #3B3C40", | 158 | "R c #3B3C40", |
159 | "S c #6E6E74", | 159 | "S c #6E6E74", |
160 | "T c #95959C", | 160 | "T c #95959C", |
161 | "U c #74747A", | 161 | "U c #74747A", |
162 | "V c #1D1D1E", | 162 | "V c #1D1D1E", |
163 | "W c #91929A", | 163 | "W c #91929A", |
164 | "X c #42444A", | 164 | "X c #42444A", |
165 | "Y c #22282E", | 165 | "Y c #22282E", |
166 | "Z c #B0B2BC", | 166 | "Z c #B0B2BC", |
167 | "` c #898A90", | 167 | "` c #898A90", |
168 | " . c #65656A", | 168 | " . c #65656A", |
169 | ".. c #999AA2", | 169 | ".. c #999AA2", |
170 | "+. c #52535A", | 170 | "+. c #52535A", |
171 | "@. c #151B21", | 171 | "@. c #151B21", |
172 | "#. c #515257", | 172 | "#. c #515257", |
173 | "$. c #B5B5BE", | 173 | "$. c #B5B5BE", |
174 | "%. c #616167", | 174 | "%. c #616167", |
175 | "&. c #1A1D22", | 175 | "&. c #1A1D22", |
176 | "*. c #000713", | 176 | "*. c #000713", |
177 | "=. c #1F1F21", | 177 | "=. c #1F1F21", |
178 | " ", | 178 | " ", |
179 | " . + @ # ", | 179 | " . + @ # ", |
180 | " $ % & * = - ", | 180 | " $ % & * = - ", |
181 | " ; > , ' ) ! ~ ", | 181 | " ; > , ' ) ! ~ ", |
182 | " { ] ^ / ( _ : ", | 182 | " { ] ^ / ( _ : ", |
183 | " < [ } | 1 2 3 ", | 183 | " < [ } | 1 2 3 ", |
184 | " 4 5 6 7 8 9 0 a b c ", | 184 | " 4 5 6 7 8 9 0 a b c ", |
185 | " d e f g h i j 3 k l m n ", | 185 | " d e f g h i j 3 k l m n ", |
186 | " o p q r s t u v w n ", | 186 | " o p q r s t u v w n ", |
187 | " o x y z A B C D E n ", | 187 | " o x y z A B C D E n ", |
188 | " F G H I J K L M N O ", | 188 | " F G H I J K L M N O ", |
189 | " P Q R S T U V W X ", | 189 | " P Q R S T U V W X ", |
190 | " Y Z ` b ...+. ", | 190 | " Y Z ` b ...+. ", |
191 | " @.#.$.%.&. ", | 191 | " @.#.$.%.&. ", |
192 | " *.B =. ", | 192 | " *.B =. ", |
193 | " n n n n n n n n n "}; | 193 | " n n n n n n n n n "}; |
194 | 194 | ||
195 | 195 | ||
196 | VMemo::VMemo( QWidget *parent, const char *_name ) | 196 | VMemo::VMemo( QWidget *parent, const char *_name ) |
197 | : QWidget( parent, _name ) { | 197 | : QWidget( parent, _name ) { |
198 | setFixedHeight( 18 ); | 198 | setFixedHeight( 18 ); |
199 | setFixedWidth( 14 ); | 199 | setFixedWidth( 14 ); |
200 | 200 | ||
201 | t_timer = new QTimer( this ); | 201 | t_timer = new QTimer( this ); |
202 | connect( t_timer, SIGNAL( timeout() ), SLOT( timerBreak() ) ); | 202 | connect( t_timer, SIGNAL( timeout() ), SLOT( timerBreak() ) ); |
203 | 203 | ||
204 | Config vmCfg("Vmemo"); | 204 | Config vmCfg("Vmemo"); |
205 | vmCfg.setGroup("Defaults"); | 205 | vmCfg.setGroup("Defaults"); |
206 | int toggleKey = setToggleButton(vmCfg.readNumEntry("toggleKey", -1)); | 206 | int toggleKey = setToggleButton(vmCfg.readNumEntry("toggleKey", -1)); |
207 | useADPCM = vmCfg.readBoolEntry("use_ADPCM", 0); | 207 | useADPCM = vmCfg.readBoolEntry("use_ADPCM", 0); |
208 | 208 | ||
209 | qDebug("toggleKey %d", toggleKey); | 209 | qDebug("toggleKey %d", toggleKey); |
210 | if ( QFile::exists ( "/dev/sharp_buz" ) || QFile::exists ( "/dev/sharp_led" )) | 210 | if ( QFile::exists ( "/dev/sharp_buz" ) || QFile::exists ( "/dev/sharp_led" )) |
211 | systemZaurus=TRUE; | 211 | systemZaurus=TRUE; |
212 | else | 212 | else |
213 | systemZaurus=FALSE; | 213 | systemZaurus=FALSE; |
214 | 214 | ||
215 | myChannel = new QCopChannel( "QPE/VMemo", this ); | 215 | myChannel = new QCopChannel( "QPE/VMemo", this ); |
216 | connect( myChannel, SIGNAL(received(const QCString&, const QByteArray&)), | 216 | connect( myChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
217 | this, SLOT(receive(const QCString&, const QByteArray&)) ); | 217 | this, SLOT(receive(const QCString&,const QByteArray&)) ); |
218 | 218 | ||
219 | if( toggleKey != -1 ) { | 219 | if( toggleKey != -1 ) { |
220 | // keyRegister(key, channel, message) | 220 | // keyRegister(key, channel, message) |
221 | QCopEnvelope e("QPE/Launcher", "keyRegister(int,QCString,QCString)"); | 221 | QCopEnvelope e("QPE/Launcher", "keyRegister(int,QCString,QCString)"); |
222 | // e << 4096; // Key_Escape | 222 | // e << 4096; // Key_Escape |
223 | // e << Key_F5; //4148 | 223 | // e << Key_F5; //4148 |
224 | e << toggleKey; | 224 | e << toggleKey; |
225 | e << QString("QPE/VMemo"); | 225 | e << QString("QPE/VMemo"); |
226 | e << QString("toggleRecord()"); | 226 | e << QString("toggleRecord()"); |
227 | } | 227 | } |
228 | if(toggleKey == 1) | 228 | if(toggleKey == 1) |
229 | usingIcon=TRUE; | 229 | usingIcon=TRUE; |
230 | else | 230 | else |
231 | usingIcon=FALSE; | 231 | usingIcon=FALSE; |
232 | if( vmCfg.readNumEntry("hideIcon",0) == 1) | 232 | if( vmCfg.readNumEntry("hideIcon",0) == 1) |
233 | hide(); | 233 | hide(); |
234 | recording = FALSE; | 234 | recording = FALSE; |
235 | // } | 235 | // } |
236 | } | 236 | } |
237 | 237 | ||
238 | VMemo::~VMemo() { | 238 | VMemo::~VMemo() { |
239 | } | 239 | } |
240 | 240 | ||
241 | int VMemo::position() | 241 | int VMemo::position() |
242 | { | 242 | { |
243 | return 6; | 243 | return 6; |
244 | } | 244 | } |
245 | 245 | ||
246 | void VMemo::receive( const QCString &msg, const QByteArray &data ) { | 246 | void VMemo::receive( const QCString &msg, const QByteArray &data ) { |
247 | qDebug("receive"); | 247 | qDebug("receive"); |
248 | QDataStream stream( data, IO_ReadOnly ); | 248 | QDataStream stream( data, IO_ReadOnly ); |
249 | 249 | ||
250 | if (msg == "toggleRecord()") { | 250 | if (msg == "toggleRecord()") { |
251 | if (recording) { | 251 | if (recording) { |
252 | fromToggle = TRUE; | 252 | fromToggle = TRUE; |
253 | stopRecording(); | 253 | stopRecording(); |
254 | } else { | 254 | } else { |
255 | fromToggle = TRUE; | 255 | fromToggle = TRUE; |
256 | startRecording(); | 256 | startRecording(); |
257 | } | 257 | } |
258 | } | 258 | } |
259 | } | 259 | } |
260 | 260 | ||
261 | void VMemo::paintEvent( QPaintEvent* ) { | 261 | void VMemo::paintEvent( QPaintEvent* ) { |
262 | QPainter p(this); | 262 | QPainter p(this); |
263 | p.drawPixmap( 0, 1,( const char** ) vmemo_xpm ); | 263 | p.drawPixmap( 0, 1,( const char** ) vmemo_xpm ); |
264 | } | 264 | } |
265 | 265 | ||
266 | void VMemo::mousePressEvent( QMouseEvent * me) { | 266 | void VMemo::mousePressEvent( QMouseEvent * me) { |
267 | /* No mousePress/mouseRelease recording on the iPAQ. The REC button on the iPAQ calls these functions | 267 | /* No mousePress/mouseRelease recording on the iPAQ. The REC button on the iPAQ calls these functions |
268 | mousePressEvent and mouseReleaseEvent with a NULL parameter. */ | 268 | mousePressEvent and mouseReleaseEvent with a NULL parameter. */ |
269 | 269 | ||
270 | // if (!systemZaurus && me != NULL) | 270 | // if (!systemZaurus && me != NULL) |
271 | // return; | 271 | // return; |
272 | // } | 272 | // } |
273 | 273 | ||
274 | if(!recording) | 274 | if(!recording) |
275 | startRecording(); | 275 | startRecording(); |
276 | else | 276 | else |
277 | stopRecording(); | 277 | stopRecording(); |
278 | } | 278 | } |
279 | 279 | ||
280 | void VMemo::mouseReleaseEvent( QMouseEvent * ) { | 280 | void VMemo::mouseReleaseEvent( QMouseEvent * ) { |
281 | } | 281 | } |
282 | 282 | ||
283 | bool VMemo::startRecording() { | 283 | bool VMemo::startRecording() { |
284 | Config config( "Vmemo" ); | 284 | Config config( "Vmemo" ); |
285 | config.setGroup( "System" ); | 285 | config.setGroup( "System" ); |
286 | 286 | ||
287 | useAlerts = config.readBoolEntry("Alert",1); | 287 | useAlerts = config.readBoolEntry("Alert",1); |
288 | if(useAlerts) { | 288 | if(useAlerts) { |
289 | 289 | ||
290 | msgLabel = new QLabel( 0, "alertLabel" ); | 290 | msgLabel = new QLabel( 0, "alertLabel" ); |
291 | msgLabel->setText("<B><P><font size=+2>VMemo-Recording</font></B>"); | 291 | msgLabel->setText("<B><P><font size=+2>VMemo-Recording</font></B>"); |
292 | msgLabel->show(); | 292 | msgLabel->show(); |
293 | } | 293 | } |
294 | 294 | ||
295 | qDebug("Start recording engines"); | 295 | qDebug("Start recording engines"); |
296 | recording = TRUE; | 296 | recording = TRUE; |
297 | 297 | ||
298 | if (openDSP() == -1) { | 298 | if (openDSP() == -1) { |
299 | recording = FALSE; | 299 | recording = FALSE; |
300 | return FALSE; | 300 | return FALSE; |
301 | } | 301 | } |
302 | 302 | ||
303 | config.setGroup("Defaults"); | 303 | config.setGroup("Defaults"); |
304 | 304 | ||
305 | date = TimeString::dateString( QDateTime::currentDateTime(),false,true); | 305 | date = TimeString::dateString( QDateTime::currentDateTime(),false,true); |
306 | date.replace(QRegExp("'"),""); | 306 | date.replace(QRegExp("'"),""); |
307 | date.replace(QRegExp(" "),"_"); | 307 | date.replace(QRegExp(" "),"_"); |
308 | date.replace(QRegExp(":"),"."); | 308 | date.replace(QRegExp(":"),"."); |
309 | date.replace(QRegExp(","),""); | 309 | date.replace(QRegExp(","),""); |
310 | 310 | ||
311 | QString fName; | 311 | QString fName; |
312 | config.setGroup( "System" ); | 312 | config.setGroup( "System" ); |
313 | fName = QPEApplication::documentDir() ; | 313 | fName = QPEApplication::documentDir() ; |
diff --git a/core/applets/volumeapplet/volume.cpp b/core/applets/volumeapplet/volume.cpp index 8fd88f6..942cebb 100644 --- a/core/applets/volumeapplet/volume.cpp +++ b/core/applets/volumeapplet/volume.cpp | |||
@@ -315,213 +315,213 @@ VolumeControl::VolumeControl ( VolumeApplet *icon, bool /*showMic*/, QWidget *pa | |||
315 | bassSlider->setMaximumHeight( 40 ); | 315 | bassSlider->setMaximumHeight( 40 ); |
316 | bassSlider-> setFocusPolicy ( QWidget::NoFocus ); | 316 | bassSlider-> setFocusPolicy ( QWidget::NoFocus ); |
317 | 317 | ||
318 | QLabel *bassLabel = new QLabel ( this ); | 318 | QLabel *bassLabel = new QLabel ( this ); |
319 | bassLabel-> setPixmap ( QPixmap ( bass_xpm )); | 319 | bassLabel-> setPixmap ( QPixmap ( bass_xpm )); |
320 | 320 | ||
321 | QLabel *trebleLabel = new QLabel( this ); | 321 | QLabel *trebleLabel = new QLabel( this ); |
322 | trebleLabel->setPixmap( QPixmap ( treble_xpm ) ); | 322 | trebleLabel->setPixmap( QPixmap ( treble_xpm ) ); |
323 | 323 | ||
324 | grid->addWidget( trebleLabel, 0, 4, AlignCenter ); | 324 | grid->addWidget( trebleLabel, 0, 4, AlignCenter ); |
325 | grid->addWidget( basstrebleBox, 1, 4, AlignCenter ); | 325 | grid->addWidget( basstrebleBox, 1, 4, AlignCenter ); |
326 | grid-> addWidget ( bassLabel, 2, 4, AlignCenter ); | 326 | grid-> addWidget ( bassLabel, 2, 4, AlignCenter ); |
327 | 327 | ||
328 | if ( !has_bass ) { | 328 | if ( !has_bass ) { |
329 | bassSlider->hide(); | 329 | bassSlider->hide(); |
330 | bassLabel->hide(); | 330 | bassLabel->hide(); |
331 | } | 331 | } |
332 | 332 | ||
333 | if ( !has_treble ) { | 333 | if ( !has_treble ) { |
334 | trebleSlider->hide(); | 334 | trebleSlider->hide(); |
335 | trebleLabel->hide(); | 335 | trebleLabel->hide(); |
336 | } | 336 | } |
337 | 337 | ||
338 | micSlider = new QSlider ( this ); | 338 | micSlider = new QSlider ( this ); |
339 | micSlider-> setRange ( 0, 100 ); | 339 | micSlider-> setRange ( 0, 100 ); |
340 | micSlider-> setTickmarks ( QSlider::Both ); | 340 | micSlider-> setTickmarks ( QSlider::Both ); |
341 | micSlider-> setTickInterval ( 20 ); | 341 | micSlider-> setTickInterval ( 20 ); |
342 | micSlider-> setFocusPolicy ( QWidget::NoFocus ); | 342 | micSlider-> setFocusPolicy ( QWidget::NoFocus ); |
343 | 343 | ||
344 | l = new QLabel ( this ); | 344 | l = new QLabel ( this ); |
345 | l-> setPixmap ( QPixmap ( mic_xpm )); | 345 | l-> setPixmap ( QPixmap ( mic_xpm )); |
346 | 346 | ||
347 | grid-> addWidget ( l, 0, 2, AlignCenter ); | 347 | grid-> addWidget ( l, 0, 2, AlignCenter ); |
348 | grid-> addWidget ( micSlider, 1, 2, AlignCenter ); | 348 | grid-> addWidget ( micSlider, 1, 2, AlignCenter ); |
349 | 349 | ||
350 | micLed = new OLedBox ( red, this ); | 350 | micLed = new OLedBox ( red, this ); |
351 | micLed-> setFocusPolicy ( QWidget::NoFocus ); | 351 | micLed-> setFocusPolicy ( QWidget::NoFocus ); |
352 | micLed-> setFixedSize ( 16, 16 ); | 352 | micLed-> setFixedSize ( 16, 16 ); |
353 | 353 | ||
354 | grid-> addWidget ( micLed, 2, 2, AlignCenter ); | 354 | grid-> addWidget ( micLed, 2, 2, AlignCenter ); |
355 | 355 | ||
356 | alarmSlider = new QSlider ( this ); | 356 | alarmSlider = new QSlider ( this ); |
357 | alarmSlider-> setRange ( 0, 100 ); | 357 | alarmSlider-> setRange ( 0, 100 ); |
358 | alarmSlider-> setTickmarks ( QSlider::Both ); | 358 | alarmSlider-> setTickmarks ( QSlider::Both ); |
359 | alarmSlider-> setTickInterval ( 20 ); | 359 | alarmSlider-> setTickInterval ( 20 ); |
360 | alarmSlider-> setFocusPolicy ( QWidget::NoFocus ); | 360 | alarmSlider-> setFocusPolicy ( QWidget::NoFocus ); |
361 | 361 | ||
362 | QLabel *alarmLabel = new QLabel ( this ); | 362 | QLabel *alarmLabel = new QLabel ( this ); |
363 | alarmLabel-> setPixmap ( QPixmap ( alarm_xpm )); | 363 | alarmLabel-> setPixmap ( QPixmap ( alarm_xpm )); |
364 | 364 | ||
365 | grid-> addWidget ( alarmLabel, 0, 3, AlignCenter ); | 365 | grid-> addWidget ( alarmLabel, 0, 3, AlignCenter ); |
366 | grid-> addWidget ( alarmSlider, 1, 3, AlignCenter ); | 366 | grid-> addWidget ( alarmSlider, 1, 3, AlignCenter ); |
367 | 367 | ||
368 | alarmLed = new OLedBox ( yellow, this ); | 368 | alarmLed = new OLedBox ( yellow, this ); |
369 | alarmLed-> setFocusPolicy ( QWidget::NoFocus ); | 369 | alarmLed-> setFocusPolicy ( QWidget::NoFocus ); |
370 | alarmLed-> setFixedSize ( 16, 16 ); | 370 | alarmLed-> setFixedSize ( 16, 16 ); |
371 | 371 | ||
372 | grid-> addWidget ( alarmLed, 2, 3, AlignCenter ); | 372 | grid-> addWidget ( alarmLed, 2, 3, AlignCenter ); |
373 | 373 | ||
374 | if ( !has_wav_alarm ) { | 374 | if ( !has_wav_alarm ) { |
375 | alarmSlider-> hide ( ); | 375 | alarmSlider-> hide ( ); |
376 | alarmLabel-> hide ( ); | 376 | alarmLabel-> hide ( ); |
377 | alarmLed-> hide ( ); | 377 | alarmLed-> hide ( ); |
378 | } | 378 | } |
379 | 379 | ||
380 | grid-> addWidget ( new QLabel ( tr( "Enable Sounds for:" ), this ), 0, 6, AlignVCenter | AlignLeft ); | 380 | grid-> addWidget ( new QLabel ( tr( "Enable Sounds for:" ), this ), 0, 6, AlignVCenter | AlignLeft ); |
381 | 381 | ||
382 | vbox = new QVBoxLayout ( ); | 382 | vbox = new QVBoxLayout ( ); |
383 | vbox-> setSpacing ( 4 ); | 383 | vbox-> setSpacing ( 4 ); |
384 | grid-> addMultiCellLayout ( vbox, 1, 2, 6, 6 ); | 384 | grid-> addMultiCellLayout ( vbox, 1, 2, 6, 6 ); |
385 | 385 | ||
386 | tapBox = new QCheckBox ( tr( "Screen Taps" ), this ); | 386 | tapBox = new QCheckBox ( tr( "Screen Taps" ), this ); |
387 | tapBox-> setFocusPolicy ( QWidget::NoFocus ); | 387 | tapBox-> setFocusPolicy ( QWidget::NoFocus ); |
388 | 388 | ||
389 | vbox-> addWidget ( tapBox, AlignVCenter | AlignLeft ); | 389 | vbox-> addWidget ( tapBox, AlignVCenter | AlignLeft ); |
390 | 390 | ||
391 | keyBox = new QCheckBox ( tr( "Key Clicks" ), this ); | 391 | keyBox = new QCheckBox ( tr( "Key Clicks" ), this ); |
392 | keyBox-> setFocusPolicy ( QWidget::NoFocus ); | 392 | keyBox-> setFocusPolicy ( QWidget::NoFocus ); |
393 | 393 | ||
394 | vbox-> addWidget ( keyBox, AlignVCenter | AlignLeft ); | 394 | vbox-> addWidget ( keyBox, AlignVCenter | AlignLeft ); |
395 | 395 | ||
396 | alarmBox = new QCheckBox ( tr( "Alarm Sound" ), this ); | 396 | alarmBox = new QCheckBox ( tr( "Alarm Sound" ), this ); |
397 | alarmBox-> setFocusPolicy ( QWidget::NoFocus ); | 397 | alarmBox-> setFocusPolicy ( QWidget::NoFocus ); |
398 | 398 | ||
399 | vbox-> addWidget ( alarmBox, AlignVCenter | AlignLeft ); | 399 | vbox-> addWidget ( alarmBox, AlignVCenter | AlignLeft ); |
400 | 400 | ||
401 | if ( has_wav_alarm ) { | 401 | if ( has_wav_alarm ) { |
402 | alarmBox-> hide ( ); | 402 | alarmBox-> hide ( ); |
403 | } | 403 | } |
404 | 404 | ||
405 | vbox-> addStretch ( 100 ); | 405 | vbox-> addStretch ( 100 ); |
406 | 406 | ||
407 | setFixedSize ( sizeHint ( )); | 407 | setFixedSize ( sizeHint ( )); |
408 | setFocusPolicy ( QWidget::NoFocus ); | 408 | setFocusPolicy ( QWidget::NoFocus ); |
409 | 409 | ||
410 | rateTimer = new QTimer( this ); | 410 | rateTimer = new QTimer( this ); |
411 | connect ( rateTimer, SIGNAL( timeout ( )), this, SLOT( rateTimerDone ( ))); | 411 | connect ( rateTimer, SIGNAL( timeout()), this, SLOT( rateTimerDone())); |
412 | 412 | ||
413 | connect ( upButton, SIGNAL( pressed ( )), this, SLOT( buttonChanged ( ))); | 413 | connect ( upButton, SIGNAL( pressed()), this, SLOT( buttonChanged())); |
414 | connect ( upButton, SIGNAL( released ( )), this, SLOT( buttonChanged ( ))); | 414 | connect ( upButton, SIGNAL( released()), this, SLOT( buttonChanged())); |
415 | connect ( downButton, SIGNAL( pressed ( )), this, SLOT( buttonChanged ( ))); | 415 | connect ( downButton, SIGNAL( pressed()), this, SLOT( buttonChanged())); |
416 | connect ( downButton, SIGNAL( released ( )), this, SLOT( buttonChanged ( ))); | 416 | connect ( downButton, SIGNAL( released()), this, SLOT( buttonChanged())); |
417 | 417 | ||
418 | connect ( micSlider, SIGNAL( valueChanged ( int )), this, SLOT( micMoved( int ))); | 418 | connect ( micSlider, SIGNAL( valueChanged(int)), this, SLOT( micMoved(int))); |
419 | connect ( volSlider, SIGNAL( valueChanged ( int )), this, SLOT( volMoved( int ))); | 419 | connect ( volSlider, SIGNAL( valueChanged(int)), this, SLOT( volMoved(int))); |
420 | connect ( alarmSlider, SIGNAL( valueChanged ( int )), this, SLOT( alarmMoved( int ))); | 420 | connect ( alarmSlider, SIGNAL( valueChanged(int)), this, SLOT( alarmMoved(int))); |
421 | connect ( bassSlider, SIGNAL( valueChanged ( int )), this, SLOT( bassMoved( int ))); | 421 | connect ( bassSlider, SIGNAL( valueChanged(int)), this, SLOT( bassMoved(int))); |
422 | connect ( trebleSlider, SIGNAL( valueChanged ( int )), this, SLOT( trebleMoved( int ))); | 422 | connect ( trebleSlider, SIGNAL( valueChanged(int)), this, SLOT( trebleMoved(int))); |
423 | 423 | ||
424 | 424 | ||
425 | connect ( volLed, SIGNAL( toggled ( bool )), this, SLOT( volMuteToggled ( bool ))); | 425 | connect ( volLed, SIGNAL( toggled(bool)), this, SLOT( volMuteToggled(bool))); |
426 | connect ( micLed, SIGNAL( toggled ( bool )), this, SLOT( micMuteToggled ( bool ))); | 426 | connect ( micLed, SIGNAL( toggled(bool)), this, SLOT( micMuteToggled(bool))); |
427 | connect ( alarmLed, SIGNAL( toggled ( bool )), this, SLOT( alarmSoundToggled ( bool ))); | 427 | connect ( alarmLed, SIGNAL( toggled(bool)), this, SLOT( alarmSoundToggled(bool))); |
428 | 428 | ||
429 | connect ( alarmBox, SIGNAL( toggled ( bool )), this, SLOT( alarmSoundToggled ( bool ))); | 429 | connect ( alarmBox, SIGNAL( toggled(bool)), this, SLOT( alarmSoundToggled(bool))); |
430 | connect ( keyBox, SIGNAL( toggled ( bool )), this, SLOT( keyClickToggled ( bool ))); | 430 | connect ( keyBox, SIGNAL( toggled(bool)), this, SLOT( keyClickToggled(bool))); |
431 | connect ( tapBox, SIGNAL( toggled ( bool )), this, SLOT( screenTapToggled ( bool ))); | 431 | connect ( tapBox, SIGNAL( toggled(bool)), this, SLOT( screenTapToggled(bool))); |
432 | 432 | ||
433 | // initialize variables | 433 | // initialize variables |
434 | 434 | ||
435 | readConfig ( true ); | 435 | readConfig ( true ); |
436 | 436 | ||
437 | // initialize the config file, in case some entries are missing | 437 | // initialize the config file, in case some entries are missing |
438 | 438 | ||
439 | writeConfigEntry ( "VolumePercent", m_vol_percent, UPD_None ); | 439 | writeConfigEntry ( "VolumePercent", m_vol_percent, UPD_None ); |
440 | writeConfigEntry ( "BassPercent", m_vol_percent, UPD_None ); | 440 | writeConfigEntry ( "BassPercent", m_vol_percent, UPD_None ); |
441 | writeConfigEntry ( "TreblePercent", m_vol_percent, UPD_None ); | 441 | writeConfigEntry ( "TreblePercent", m_vol_percent, UPD_None ); |
442 | writeConfigEntry ( "Mute", m_vol_muted, UPD_None ); | 442 | writeConfigEntry ( "Mute", m_vol_muted, UPD_None ); |
443 | writeConfigEntry ( "AlarmPercent", m_alarm_percent, UPD_None ); | 443 | writeConfigEntry ( "AlarmPercent", m_alarm_percent, UPD_None ); |
444 | writeConfigEntry ( "TouchSound", m_snd_touch, UPD_None ); | 444 | writeConfigEntry ( "TouchSound", m_snd_touch, UPD_None ); |
445 | writeConfigEntry ( "KeySound", m_snd_key, UPD_None ); | 445 | writeConfigEntry ( "KeySound", m_snd_key, UPD_None ); |
446 | writeConfigEntry ( "AlarmSound", m_snd_alarm, UPD_Vol ); | 446 | writeConfigEntry ( "AlarmSound", m_snd_alarm, UPD_Vol ); |
447 | 447 | ||
448 | writeConfigEntry ( "Mic", m_mic_percent, UPD_None ); | 448 | writeConfigEntry ( "Mic", m_mic_percent, UPD_None ); |
449 | writeConfigEntry ( "MicMute", m_mic_muted, UPD_Mic ); | 449 | writeConfigEntry ( "MicMute", m_mic_muted, UPD_Mic ); |
450 | } | 450 | } |
451 | 451 | ||
452 | bool VolumeControl::volMuted ( ) const | 452 | bool VolumeControl::volMuted ( ) const |
453 | { | 453 | { |
454 | return m_vol_muted; | 454 | return m_vol_muted; |
455 | } | 455 | } |
456 | 456 | ||
457 | int VolumeControl::volPercent ( ) const | 457 | int VolumeControl::volPercent ( ) const |
458 | { | 458 | { |
459 | return m_vol_percent; | 459 | return m_vol_percent; |
460 | } | 460 | } |
461 | 461 | ||
462 | void VolumeControl::keyPressEvent ( QKeyEvent *e ) | 462 | void VolumeControl::keyPressEvent ( QKeyEvent *e ) |
463 | { | 463 | { |
464 | switch ( e-> key ( )) { | 464 | switch ( e-> key ( )) { |
465 | case Key_Up: | 465 | case Key_Up: |
466 | volSlider-> subtractStep ( ); | 466 | volSlider-> subtractStep ( ); |
467 | break; | 467 | break; |
468 | case Key_Down: | 468 | case Key_Down: |
469 | volSlider-> addStep ( ); | 469 | volSlider-> addStep ( ); |
470 | break; | 470 | break; |
471 | case Key_Space: | 471 | case Key_Space: |
472 | volLed-> toggle ( ); | 472 | volLed-> toggle ( ); |
473 | break; | 473 | break; |
474 | case Key_Escape: | 474 | case Key_Escape: |
475 | hide ( ); | 475 | hide ( ); |
476 | break; | 476 | break; |
477 | } | 477 | } |
478 | } | 478 | } |
479 | 479 | ||
480 | void VolumeControl::buttonChanged ( ) | 480 | void VolumeControl::buttonChanged ( ) |
481 | { | 481 | { |
482 | if ( upButton-> isDown ( ) || downButton->isDown ( )) { | 482 | if ( upButton-> isDown ( ) || downButton->isDown ( )) { |
483 | rateTimerDone ( ); // Call it one time manually, otherwise it wont get | 483 | rateTimerDone ( ); // Call it one time manually, otherwise it wont get |
484 | // called at all when a button is pressed for a time | 484 | // called at all when a button is pressed for a time |
485 | // shorter than RATE_TIMER_INTERVAL. | 485 | // shorter than RATE_TIMER_INTERVAL. |
486 | rateTimer-> start ( RATE_TIMER_INTERVAL, false ); | 486 | rateTimer-> start ( RATE_TIMER_INTERVAL, false ); |
487 | } | 487 | } |
488 | else | 488 | else |
489 | rateTimer-> stop ( ); | 489 | rateTimer-> stop ( ); |
490 | } | 490 | } |
491 | 491 | ||
492 | void VolumeControl::rateTimerDone ( ) | 492 | void VolumeControl::rateTimerDone ( ) |
493 | { | 493 | { |
494 | if ( upButton-> isDown ( )) | 494 | if ( upButton-> isDown ( )) |
495 | volSlider-> setValue ( volSlider-> value ( ) - 2 ); | 495 | volSlider-> setValue ( volSlider-> value ( ) - 2 ); |
496 | else // if ( downButton-> isDown ( )) | 496 | else // if ( downButton-> isDown ( )) |
497 | volSlider-> setValue ( volSlider-> value ( ) + 2 ); | 497 | volSlider-> setValue ( volSlider-> value ( ) + 2 ); |
498 | } | 498 | } |
499 | 499 | ||
500 | void VolumeControl::show ( bool /*showMic*/ ) | 500 | void VolumeControl::show ( bool /*showMic*/ ) |
501 | { | 501 | { |
502 | readConfig ( ); | 502 | readConfig ( ); |
503 | 503 | ||
504 | QPoint curPos = m_icon-> mapToGlobal ( QPoint ( 0, 0 )); | 504 | QPoint curPos = m_icon-> mapToGlobal ( QPoint ( 0, 0 )); |
505 | 505 | ||
506 | int w = sizeHint ( ). width ( ); | 506 | int w = sizeHint ( ). width ( ); |
507 | int x = curPos.x ( ) - ( w / 2 ); | 507 | int x = curPos.x ( ) - ( w / 2 ); |
508 | 508 | ||
509 | if (( x + w ) > QPEApplication::desktop ( )-> width ( )) | 509 | if (( x + w ) > QPEApplication::desktop ( )-> width ( )) |
510 | x = QPEApplication::desktop ( )-> width ( ) - w; | 510 | x = QPEApplication::desktop ( )-> width ( ) - w; |
511 | 511 | ||
512 | move ( x, curPos. y ( ) - sizeHint ( ). height ( )); | 512 | move ( x, curPos. y ( ) - sizeHint ( ). height ( )); |
513 | QFrame::show ( ); | 513 | QFrame::show ( ); |
514 | 514 | ||
515 | } | 515 | } |
516 | 516 | ||
517 | void VolumeControl::readConfig ( bool force ) | 517 | void VolumeControl::readConfig ( bool force ) |
518 | { | 518 | { |
519 | Config cfg ( "qpe" ); | 519 | Config cfg ( "qpe" ); |
520 | cfg. setGroup ( "Volume" ); | 520 | cfg. setGroup ( "Volume" ); |
521 | 521 | ||
522 | int old_vp = m_vol_percent; | 522 | int old_vp = m_vol_percent; |
523 | int old_mp = m_mic_percent; | 523 | int old_mp = m_mic_percent; |
524 | int old_bass = m_bass_percent; | 524 | int old_bass = m_bass_percent; |
525 | int old_treble = m_treble_percent; | 525 | int old_treble = m_treble_percent; |
526 | bool old_vm = m_vol_muted; | 526 | bool old_vm = m_vol_muted; |
527 | bool old_mm = m_mic_muted; | 527 | bool old_mm = m_mic_muted; |
@@ -631,153 +631,153 @@ void VolumeControl::volMoved ( int percent ) | |||
631 | // clamp volume percent to be between 0 and 100 | 631 | // clamp volume percent to be between 0 and 100 |
632 | m_vol_percent = ( m_vol_percent < 0 ) ? 0 : (( m_vol_percent > 100 ) ? 100 : m_vol_percent ); | 632 | m_vol_percent = ( m_vol_percent < 0 ) ? 0 : (( m_vol_percent > 100 ) ? 100 : m_vol_percent ); |
633 | // repaint just the little volume rectangle | 633 | // repaint just the little volume rectangle |
634 | m_icon-> redraw ( false ); | 634 | m_icon-> redraw ( false ); |
635 | 635 | ||
636 | writeConfigEntry ( "VolumePercent", m_vol_percent, UPD_Vol ); | 636 | writeConfigEntry ( "VolumePercent", m_vol_percent, UPD_Vol ); |
637 | } | 637 | } |
638 | 638 | ||
639 | void VolumeControl::micMoved ( int percent ) | 639 | void VolumeControl::micMoved ( int percent ) |
640 | { | 640 | { |
641 | m_mic_percent = 100 - percent; | 641 | m_mic_percent = 100 - percent; |
642 | 642 | ||
643 | // clamp volume percent to be between 0 and 100 | 643 | // clamp volume percent to be between 0 and 100 |
644 | m_mic_percent = ( m_mic_percent < 0 ) ? 0 : (( m_mic_percent > 100 ) ? 100 : m_mic_percent ); | 644 | m_mic_percent = ( m_mic_percent < 0 ) ? 0 : (( m_mic_percent > 100 ) ? 100 : m_mic_percent ); |
645 | 645 | ||
646 | writeConfigEntry ( "Mic", m_mic_percent, UPD_Mic ); | 646 | writeConfigEntry ( "Mic", m_mic_percent, UPD_Mic ); |
647 | } | 647 | } |
648 | 648 | ||
649 | void VolumeControl::alarmMoved ( int percent ) | 649 | void VolumeControl::alarmMoved ( int percent ) |
650 | { | 650 | { |
651 | m_alarm_percent = 100 - percent; | 651 | m_alarm_percent = 100 - percent; |
652 | 652 | ||
653 | // clamp volume percent to be between 0 and 100 | 653 | // clamp volume percent to be between 0 and 100 |
654 | m_alarm_percent = ( m_alarm_percent < 0 ) ? 0 : (( m_alarm_percent > 100 ) ? 100 : m_alarm_percent ); | 654 | m_alarm_percent = ( m_alarm_percent < 0 ) ? 0 : (( m_alarm_percent > 100 ) ? 100 : m_alarm_percent ); |
655 | 655 | ||
656 | writeConfigEntry ( "AlarmPercent", m_alarm_percent, UPD_None ); | 656 | writeConfigEntry ( "AlarmPercent", m_alarm_percent, UPD_None ); |
657 | } | 657 | } |
658 | 658 | ||
659 | 659 | ||
660 | void VolumeControl::bassMoved ( int percent ) | 660 | void VolumeControl::bassMoved ( int percent ) |
661 | { | 661 | { |
662 | m_bass_percent = 100 - percent; | 662 | m_bass_percent = 100 - percent; |
663 | 663 | ||
664 | // clamp bass percent to be between 0 and 100 | 664 | // clamp bass percent to be between 0 and 100 |
665 | m_bass_percent = ( m_bass_percent < 0 ) ? 0 : (( m_bass_percent > 100 ) ? 100 : m_bass_percent ); | 665 | m_bass_percent = ( m_bass_percent < 0 ) ? 0 : (( m_bass_percent > 100 ) ? 100 : m_bass_percent ); |
666 | 666 | ||
667 | writeConfigEntry ( "BassPercent", m_bass_percent, UPD_Bass ); | 667 | writeConfigEntry ( "BassPercent", m_bass_percent, UPD_Bass ); |
668 | } | 668 | } |
669 | 669 | ||
670 | 670 | ||
671 | 671 | ||
672 | void VolumeControl::trebleMoved ( int percent ) | 672 | void VolumeControl::trebleMoved ( int percent ) |
673 | { | 673 | { |
674 | m_treble_percent = 100 - percent; | 674 | m_treble_percent = 100 - percent; |
675 | 675 | ||
676 | // clamp treble percent to be between 0 and 100 | 676 | // clamp treble percent to be between 0 and 100 |
677 | m_treble_percent = ( m_treble_percent < 0 ) ? 0 : (( m_treble_percent > 100 ) ? 100 : m_treble_percent ); | 677 | m_treble_percent = ( m_treble_percent < 0 ) ? 0 : (( m_treble_percent > 100 ) ? 100 : m_treble_percent ); |
678 | 678 | ||
679 | writeConfigEntry ( "TreblePercent", m_treble_percent, UPD_Treble ); | 679 | writeConfigEntry ( "TreblePercent", m_treble_percent, UPD_Treble ); |
680 | } | 680 | } |
681 | 681 | ||
682 | 682 | ||
683 | 683 | ||
684 | void VolumeControl::writeConfigEntry ( const char *entry, int val, eUpdate upd ) | 684 | void VolumeControl::writeConfigEntry ( const char *entry, int val, eUpdate upd ) |
685 | { | 685 | { |
686 | Config cfg ( "qpe" ); | 686 | Config cfg ( "qpe" ); |
687 | cfg. setGroup ( "Volume" ); | 687 | cfg. setGroup ( "Volume" ); |
688 | cfg. writeEntry ( entry, val ); | 688 | cfg. writeEntry ( entry, val ); |
689 | // cfg. write ( ); | 689 | // cfg. write ( ); |
690 | 690 | ||
691 | #if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP) | 691 | #if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP) |
692 | switch ( upd ) { | 692 | switch ( upd ) { |
693 | case UPD_Vol: { | 693 | case UPD_Vol: { |
694 | QCopEnvelope ( "QPE/System", "volumeChange(bool)" ) << m_vol_muted; | 694 | QCopEnvelope ( "QPE/System", "volumeChange(bool)" ) << m_vol_muted; |
695 | break; | 695 | break; |
696 | } | 696 | } |
697 | case UPD_Mic: { | 697 | case UPD_Mic: { |
698 | QCopEnvelope ( "QPE/System", "micChange(bool)" ) << m_mic_muted; | 698 | QCopEnvelope ( "QPE/System", "micChange(bool)" ) << m_mic_muted; |
699 | break; | 699 | break; |
700 | } | 700 | } |
701 | case UPD_Bass: { | 701 | case UPD_Bass: { |
702 | QCopEnvelope ( "QPE/System", "bassChange(bool)" ) << true; | 702 | QCopEnvelope ( "QPE/System", "bassChange(bool)" ) << true; |
703 | break; | 703 | break; |
704 | } | 704 | } |
705 | case UPD_Treble: { | 705 | case UPD_Treble: { |
706 | QCopEnvelope ( "QPE/System", "trebleChange(bool)" ) << true; | 706 | QCopEnvelope ( "QPE/System", "trebleChange(bool)" ) << true; |
707 | break; | 707 | break; |
708 | } | 708 | } |
709 | 709 | ||
710 | case UPD_None: | 710 | case UPD_None: |
711 | break; | 711 | break; |
712 | } | 712 | } |
713 | #endif | 713 | #endif |
714 | } | 714 | } |
715 | 715 | ||
716 | //=========================================================================== | 716 | //=========================================================================== |
717 | 717 | ||
718 | VolumeApplet::VolumeApplet( QWidget *parent, const char *name ) | 718 | VolumeApplet::VolumeApplet( QWidget *parent, const char *name ) |
719 | : QWidget( parent, name ) | 719 | : QWidget( parent, name ) |
720 | { | 720 | { |
721 | setFixedWidth ( AppLnk::smallIconSize() ); | 721 | setFixedWidth ( AppLnk::smallIconSize() ); |
722 | setFixedHeight ( AppLnk::smallIconSize()+4 ); | 722 | setFixedHeight ( AppLnk::smallIconSize()+4 ); |
723 | 723 | ||
724 | m_pixmap = new QPixmap ( Resource::loadPixmap ( "volume" )); | 724 | m_pixmap = new QPixmap ( Resource::loadPixmap ( "volume" )); |
725 | m_dialog = new VolumeControl ( this, true, this, "volumecontrol" ); | 725 | m_dialog = new VolumeControl ( this, true, this, "volumecontrol" ); |
726 | 726 | ||
727 | connect ( qApp, SIGNAL( volumeChanged ( bool )), m_dialog, SLOT( volumeChanged( bool ))); | 727 | connect ( qApp, SIGNAL( volumeChanged(bool)), m_dialog, SLOT( volumeChanged(bool))); |
728 | connect ( qApp, SIGNAL( micChanged ( bool )), m_dialog, SLOT ( micChanged( bool ))); | 728 | connect ( qApp, SIGNAL( micChanged(bool)), m_dialog, SLOT ( micChanged(bool))); |
729 | } | 729 | } |
730 | 730 | ||
731 | VolumeApplet::~VolumeApplet() | 731 | VolumeApplet::~VolumeApplet() |
732 | { | 732 | { |
733 | delete m_pixmap; | 733 | delete m_pixmap; |
734 | } | 734 | } |
735 | 735 | ||
736 | int VolumeApplet::position() | 736 | int VolumeApplet::position() |
737 | { | 737 | { |
738 | return 6; | 738 | return 6; |
739 | } | 739 | } |
740 | 740 | ||
741 | void VolumeApplet::mousePressEvent ( QMouseEvent * ) | 741 | void VolumeApplet::mousePressEvent ( QMouseEvent * ) |
742 | { | 742 | { |
743 | if ( m_dialog-> isVisible ( )) | 743 | if ( m_dialog-> isVisible ( )) |
744 | m_dialog-> hide ( ); | 744 | m_dialog-> hide ( ); |
745 | else | 745 | else |
746 | m_dialog-> show ( true ); | 746 | m_dialog-> show ( true ); |
747 | } | 747 | } |
748 | 748 | ||
749 | void VolumeApplet::redraw ( bool all ) | 749 | void VolumeApplet::redraw ( bool all ) |
750 | { | 750 | { |
751 | if ( all ) | 751 | if ( all ) |
752 | repaint ( true ); | 752 | repaint ( true ); |
753 | else | 753 | else |
754 | repaint ( 2, height ( ) - 3, width ( ) - 4, 2, false ); | 754 | repaint ( 2, height ( ) - 3, width ( ) - 4, 2, false ); |
755 | } | 755 | } |
756 | 756 | ||
757 | 757 | ||
758 | void VolumeApplet::paintEvent ( QPaintEvent * ) | 758 | void VolumeApplet::paintEvent ( QPaintEvent * ) |
759 | { | 759 | { |
760 | QPainter p ( this ); | 760 | QPainter p ( this ); |
761 | 761 | ||
762 | p. drawPixmap ( (width()- m_pixmap->width())/2, QMAX( (height()-4-m_pixmap->height() )/2, 1), *m_pixmap ); | 762 | p. drawPixmap ( (width()- m_pixmap->width())/2, QMAX( (height()-4-m_pixmap->height() )/2, 1), *m_pixmap ); |
763 | p. setPen ( darkGray ); | 763 | p. setPen ( darkGray ); |
764 | p. drawRect ( 1, height() - 4, width() - 2, 4 ); | 764 | p. drawRect ( 1, height() - 4, width() - 2, 4 ); |
765 | 765 | ||
766 | int pixelsWide = m_dialog-> volPercent ( ) * ( width() - 4 ) / 100; | 766 | int pixelsWide = m_dialog-> volPercent ( ) * ( width() - 4 ) / 100; |
767 | p. fillRect ( 2, height() - 3, pixelsWide, 2, red ); | 767 | p. fillRect ( 2, height() - 3, pixelsWide, 2, red ); |
768 | p. fillRect ( pixelsWide + 2, height() - 3, width() - 4 - pixelsWide, 2, lightGray ); | 768 | p. fillRect ( pixelsWide + 2, height() - 3, width() - 4 - pixelsWide, 2, lightGray ); |
769 | 769 | ||
770 | if ( m_dialog-> volMuted ( )) { | 770 | if ( m_dialog-> volMuted ( )) { |
771 | p. setPen ( red ); | 771 | p. setPen ( red ); |
772 | p. drawLine ( 1, 2, width() - 2, height() - 5 ); | 772 | p. drawLine ( 1, 2, width() - 2, height() - 5 ); |
773 | p. drawLine ( 1, 3, width() - 2, height() - 4 ); | 773 | p. drawLine ( 1, 3, width() - 2, height() - 4 ); |
774 | p. drawLine ( width() - 2, 2, 1, height() - 5 ); | 774 | p. drawLine ( width() - 2, 2, 1, height() - 5 ); |
775 | p. drawLine ( width() - 2, 3, 1, height() - 4 ); | 775 | p. drawLine ( width() - 2, 3, 1, height() - 4 ); |
776 | } | 776 | } |
777 | } | 777 | } |
778 | 778 | ||
779 | 779 | ||
780 | Q_EXPORT_INTERFACE() | 780 | Q_EXPORT_INTERFACE() |
781 | { | 781 | { |
782 | Q_CREATE_INSTANCE( OTaskbarAppletWrapper<VolumeApplet> ); | 782 | Q_CREATE_INSTANCE( OTaskbarAppletWrapper<VolumeApplet> ); |
783 | } | 783 | } |
diff --git a/core/apps/embeddedkonsole/commandeditdialog.cpp b/core/apps/embeddedkonsole/commandeditdialog.cpp index c0066d8..6587b26 100644 --- a/core/apps/embeddedkonsole/commandeditdialog.cpp +++ b/core/apps/embeddedkonsole/commandeditdialog.cpp | |||
@@ -1,150 +1,150 @@ | |||
1 | //comandeditdialog.cpp | 1 | //comandeditdialog.cpp |
2 | 2 | ||
3 | #include "commandeditdialog.h" | 3 | #include "commandeditdialog.h" |
4 | #include "playlistselection.h" | 4 | #include "playlistselection.h" |
5 | #include <qpe/config.h> | 5 | #include <qpe/config.h> |
6 | #include <qpe/resource.h> | 6 | #include <qpe/resource.h> |
7 | #include <qtoolbutton.h> | 7 | #include <qtoolbutton.h> |
8 | #include <qlineedit.h> | 8 | #include <qlineedit.h> |
9 | #include <qheader.h> | 9 | #include <qheader.h> |
10 | #include <qlabel.h> | 10 | #include <qlabel.h> |
11 | #include "smallcommandeditdialogbase.h" | 11 | #include "smallcommandeditdialogbase.h" |
12 | 12 | ||
13 | CommandEditDialog::CommandEditDialog(QWidget *parent, const char* name, WFlags fl ) | 13 | CommandEditDialog::CommandEditDialog(QWidget *parent, const char* name, WFlags fl ) |
14 | : CommandEditDialogBase(parent, name, TRUE, fl) | 14 | : CommandEditDialogBase(parent, name, TRUE, fl) |
15 | 15 | ||
16 | { | 16 | { |
17 | m_SuggestedCommandList->addColumn( tr("Command Selection") ); | 17 | m_SuggestedCommandList->addColumn( tr("Command Selection") ); |
18 | m_SuggestedCommandList->header()->hide(); | 18 | m_SuggestedCommandList->header()->hide(); |
19 | m_SuggestedCommandList->setSorting(-1,FALSE); | 19 | m_SuggestedCommandList->setSorting(-1,FALSE); |
20 | m_SuggestedCommandList->clearSelection(); | 20 | m_SuggestedCommandList->clearSelection(); |
21 | m_SuggestedCommandList->setSorting(0,TRUE); | 21 | m_SuggestedCommandList->setSorting(0,TRUE); |
22 | QListViewItem *item; | 22 | QListViewItem *item; |
23 | item = new QListViewItem( m_SuggestedCommandList,"export "); | 23 | item = new QListViewItem( m_SuggestedCommandList,"export "); |
24 | item = new QListViewItem( m_SuggestedCommandList,"ifconfig "); | 24 | item = new QListViewItem( m_SuggestedCommandList,"ifconfig "); |
25 | item = new QListViewItem( m_SuggestedCommandList,"ipkg "); | 25 | item = new QListViewItem( m_SuggestedCommandList,"ipkg "); |
26 | item = new QListViewItem( m_SuggestedCommandList,"gzip "); | 26 | item = new QListViewItem( m_SuggestedCommandList,"gzip "); |
27 | item = new QListViewItem( m_SuggestedCommandList,"gunzip "); | 27 | item = new QListViewItem( m_SuggestedCommandList,"gunzip "); |
28 | item = new QListViewItem( m_SuggestedCommandList,"chgrp "); | 28 | item = new QListViewItem( m_SuggestedCommandList,"chgrp "); |
29 | item = new QListViewItem( m_SuggestedCommandList,"chown "); | 29 | item = new QListViewItem( m_SuggestedCommandList,"chown "); |
30 | item = new QListViewItem( m_SuggestedCommandList,"date "); | 30 | item = new QListViewItem( m_SuggestedCommandList,"date "); |
31 | item = new QListViewItem( m_SuggestedCommandList,"dd "); | 31 | item = new QListViewItem( m_SuggestedCommandList,"dd "); |
32 | item = new QListViewItem( m_SuggestedCommandList,"dmesg "); | 32 | item = new QListViewItem( m_SuggestedCommandList,"dmesg "); |
33 | item = new QListViewItem( m_SuggestedCommandList,"fuser "); | 33 | item = new QListViewItem( m_SuggestedCommandList,"fuser "); |
34 | item = new QListViewItem( m_SuggestedCommandList,"hostname "); | 34 | item = new QListViewItem( m_SuggestedCommandList,"hostname "); |
35 | item = new QListViewItem( m_SuggestedCommandList,"kill "); | 35 | item = new QListViewItem( m_SuggestedCommandList,"kill "); |
36 | item = new QListViewItem( m_SuggestedCommandList,"killall "); | 36 | item = new QListViewItem( m_SuggestedCommandList,"killall "); |
37 | item = new QListViewItem( m_SuggestedCommandList,"ln "); | 37 | item = new QListViewItem( m_SuggestedCommandList,"ln "); |
38 | item = new QListViewItem( m_SuggestedCommandList,"ln -s "); | 38 | item = new QListViewItem( m_SuggestedCommandList,"ln -s "); |
39 | item = new QListViewItem( m_SuggestedCommandList,"lsmod"); | 39 | item = new QListViewItem( m_SuggestedCommandList,"lsmod"); |
40 | item = new QListViewItem( m_SuggestedCommandList,"depmod -a"); | 40 | item = new QListViewItem( m_SuggestedCommandList,"depmod -a"); |
41 | item = new QListViewItem( m_SuggestedCommandList,"modprobe "); | 41 | item = new QListViewItem( m_SuggestedCommandList,"modprobe "); |
42 | item = new QListViewItem( m_SuggestedCommandList,"mount "); | 42 | item = new QListViewItem( m_SuggestedCommandList,"mount "); |
43 | item = new QListViewItem( m_SuggestedCommandList,"more "); | 43 | item = new QListViewItem( m_SuggestedCommandList,"more "); |
44 | item = new QListViewItem( m_SuggestedCommandList,"sort "); | 44 | item = new QListViewItem( m_SuggestedCommandList,"sort "); |
45 | item = new QListViewItem( m_SuggestedCommandList,"touch "); | 45 | item = new QListViewItem( m_SuggestedCommandList,"touch "); |
46 | item = new QListViewItem( m_SuggestedCommandList,"umount "); | 46 | item = new QListViewItem( m_SuggestedCommandList,"umount "); |
47 | item = new QListViewItem( m_SuggestedCommandList,"mknod "); | 47 | item = new QListViewItem( m_SuggestedCommandList,"mknod "); |
48 | item = new QListViewItem( m_SuggestedCommandList,"netstat "); | 48 | item = new QListViewItem( m_SuggestedCommandList,"netstat "); |
49 | item = new QListViewItem( m_SuggestedCommandList,"route "); | 49 | item = new QListViewItem( m_SuggestedCommandList,"route "); |
50 | item = new QListViewItem( m_SuggestedCommandList,"cardctl eject "); | 50 | item = new QListViewItem( m_SuggestedCommandList,"cardctl eject "); |
51 | m_SuggestedCommandList->setSelected(m_SuggestedCommandList->firstChild(),TRUE); | 51 | m_SuggestedCommandList->setSelected(m_SuggestedCommandList->firstChild(),TRUE); |
52 | m_SuggestedCommandList->sort(); | 52 | m_SuggestedCommandList->sort(); |
53 | 53 | ||
54 | connect( m_SuggestedCommandList, SIGNAL( clicked( QListViewItem * ) ), m_PlayListSelection, SLOT( addToSelection( QListViewItem *) ) ); | 54 | connect( m_SuggestedCommandList, SIGNAL( clicked(QListViewItem*) ), m_PlayListSelection, SLOT( addToSelection(QListViewItem*) ) ); |
55 | 55 | ||
56 | 56 | ||
57 | 57 | ||
58 | ToolButton1->setTextLabel("new"); | 58 | ToolButton1->setTextLabel("new"); |
59 | ToolButton1->setPixmap(Resource::loadPixmap("new")); | 59 | ToolButton1->setPixmap(Resource::loadPixmap("new")); |
60 | ToolButton1->setAutoRaise(TRUE); | 60 | ToolButton1->setAutoRaise(TRUE); |
61 | ToolButton1->setFocusPolicy(QWidget::NoFocus); | 61 | ToolButton1->setFocusPolicy(QWidget::NoFocus); |
62 | connect(ToolButton1,SIGNAL(clicked()),this,SLOT(showAddDialog())); | 62 | connect(ToolButton1,SIGNAL(clicked()),this,SLOT(showAddDialog())); |
63 | 63 | ||
64 | ToolButton2->setTextLabel("edit"); | 64 | ToolButton2->setTextLabel("edit"); |
65 | ToolButton2->setPixmap(Resource::loadPixmap("edit")); | 65 | ToolButton2->setPixmap(Resource::loadPixmap("edit")); |
66 | ToolButton2->setAutoRaise(TRUE); | 66 | ToolButton2->setAutoRaise(TRUE); |
67 | ToolButton2->setFocusPolicy(QWidget::NoFocus); | 67 | ToolButton2->setFocusPolicy(QWidget::NoFocus); |
68 | connect(ToolButton2,SIGNAL(clicked()),this,SLOT(showEditDialog())); | 68 | connect(ToolButton2,SIGNAL(clicked()),this,SLOT(showEditDialog())); |
69 | 69 | ||
70 | ToolButton3->setTextLabel("delete"); | 70 | ToolButton3->setTextLabel("delete"); |
71 | ToolButton3->setPixmap(Resource::loadPixmap("editdelete")); | 71 | ToolButton3->setPixmap(Resource::loadPixmap("editdelete")); |
72 | ToolButton3->setAutoRaise(TRUE); | 72 | ToolButton3->setAutoRaise(TRUE); |
73 | ToolButton3->setFocusPolicy(QWidget::NoFocus); | 73 | ToolButton3->setFocusPolicy(QWidget::NoFocus); |
74 | connect(ToolButton3,SIGNAL(clicked()),m_PlayListSelection,SLOT(removeSelected())); | 74 | connect(ToolButton3,SIGNAL(clicked()),m_PlayListSelection,SLOT(removeSelected())); |
75 | 75 | ||
76 | ToolButton4->setTextLabel("up"); | 76 | ToolButton4->setTextLabel("up"); |
77 | ToolButton4->setPixmap(Resource::loadPixmap("up")); | 77 | ToolButton4->setPixmap(Resource::loadPixmap("up")); |
78 | ToolButton4->setAutoRaise(TRUE); | 78 | ToolButton4->setAutoRaise(TRUE); |
79 | ToolButton4->setFocusPolicy(QWidget::NoFocus); | 79 | ToolButton4->setFocusPolicy(QWidget::NoFocus); |
80 | connect(ToolButton4,SIGNAL(clicked()),m_PlayListSelection,SLOT(moveSelectedUp())); | 80 | connect(ToolButton4,SIGNAL(clicked()),m_PlayListSelection,SLOT(moveSelectedUp())); |
81 | 81 | ||
82 | ToolButton5->setTextLabel("down"); | 82 | ToolButton5->setTextLabel("down"); |
83 | ToolButton5->setPixmap(Resource::loadPixmap("down")); | 83 | ToolButton5->setPixmap(Resource::loadPixmap("down")); |
84 | ToolButton5->setAutoRaise(TRUE); | 84 | ToolButton5->setAutoRaise(TRUE); |
85 | ToolButton5->setFocusPolicy(QWidget::NoFocus); | 85 | ToolButton5->setFocusPolicy(QWidget::NoFocus); |
86 | 86 | ||
87 | connect(ToolButton5,SIGNAL(clicked()),m_PlayListSelection,SLOT(moveSelectedDown())); | 87 | connect(ToolButton5,SIGNAL(clicked()),m_PlayListSelection,SLOT(moveSelectedDown())); |
88 | 88 | ||
89 | 89 | ||
90 | 90 | ||
91 | 91 | ||
92 | QListViewItem *current = m_SuggestedCommandList->selectedItem(); | 92 | QListViewItem *current = m_SuggestedCommandList->selectedItem(); |
93 | if ( current ) | 93 | if ( current ) |
94 | item->moveItem( current ); | 94 | item->moveItem( current ); |
95 | m_SuggestedCommandList->setSelected( item, TRUE ); | 95 | m_SuggestedCommandList->setSelected( item, TRUE ); |
96 | m_SuggestedCommandList->ensureItemVisible( m_SuggestedCommandList->selectedItem() ); | 96 | m_SuggestedCommandList->ensureItemVisible( m_SuggestedCommandList->selectedItem() ); |
97 | Config cfg( "Konsole" ); | 97 | Config cfg( "Konsole" ); |
98 | cfg.setGroup("Commands"); | 98 | cfg.setGroup("Commands"); |
99 | if (cfg.readEntry("Commands Set","FALSE") == "TRUE") { | 99 | if (cfg.readEntry("Commands Set","FALSE") == "TRUE") { |
100 | for (int i = 0; i < 100; i++) { | 100 | for (int i = 0; i < 100; i++) { |
101 | QString tmp; | 101 | QString tmp; |
102 | tmp = cfg.readEntry( QString::number(i),""); | 102 | tmp = cfg.readEntry( QString::number(i),""); |
103 | if (!tmp.isEmpty()) | 103 | if (!tmp.isEmpty()) |
104 | m_PlayListSelection->addStringToSelection(tmp); | 104 | m_PlayListSelection->addStringToSelection(tmp); |
105 | } | 105 | } |
106 | } else { | 106 | } else { |
107 | 107 | ||
108 | m_PlayListSelection->addStringToSelection("ls "); | 108 | m_PlayListSelection->addStringToSelection("ls "); |
109 | m_PlayListSelection->addStringToSelection("cardctl eject"); | 109 | m_PlayListSelection->addStringToSelection("cardctl eject"); |
110 | m_PlayListSelection->addStringToSelection("cat "); | 110 | m_PlayListSelection->addStringToSelection("cat "); |
111 | m_PlayListSelection->addStringToSelection("cd "); | 111 | m_PlayListSelection->addStringToSelection("cd "); |
112 | m_PlayListSelection->addStringToSelection("chmod "); | 112 | m_PlayListSelection->addStringToSelection("chmod "); |
113 | m_PlayListSelection->addStringToSelection("cp "); | 113 | m_PlayListSelection->addStringToSelection("cp "); |
114 | m_PlayListSelection->addStringToSelection("dc "); | 114 | m_PlayListSelection->addStringToSelection("dc "); |
115 | m_PlayListSelection->addStringToSelection("df "); | 115 | m_PlayListSelection->addStringToSelection("df "); |
116 | m_PlayListSelection->addStringToSelection("dmesg"); | 116 | m_PlayListSelection->addStringToSelection("dmesg"); |
117 | m_PlayListSelection->addStringToSelection("echo "); | 117 | m_PlayListSelection->addStringToSelection("echo "); |
118 | m_PlayListSelection->addStringToSelection("env"); | 118 | m_PlayListSelection->addStringToSelection("env"); |
119 | m_PlayListSelection->addStringToSelection("find "); | 119 | m_PlayListSelection->addStringToSelection("find "); |
120 | m_PlayListSelection->addStringToSelection("free"); | 120 | m_PlayListSelection->addStringToSelection("free"); |
121 | m_PlayListSelection->addStringToSelection("grep "); | 121 | m_PlayListSelection->addStringToSelection("grep "); |
122 | m_PlayListSelection->addStringToSelection("ifconfig "); | 122 | m_PlayListSelection->addStringToSelection("ifconfig "); |
123 | m_PlayListSelection->addStringToSelection("ipkg "); | 123 | m_PlayListSelection->addStringToSelection("ipkg "); |
124 | m_PlayListSelection->addStringToSelection("mkdir "); | 124 | m_PlayListSelection->addStringToSelection("mkdir "); |
125 | m_PlayListSelection->addStringToSelection("mv "); | 125 | m_PlayListSelection->addStringToSelection("mv "); |
126 | m_PlayListSelection->addStringToSelection("nc localhost 7776"); | 126 | m_PlayListSelection->addStringToSelection("nc localhost 7776"); |
127 | m_PlayListSelection->addStringToSelection("nc localhost 7777"); | 127 | m_PlayListSelection->addStringToSelection("nc localhost 7777"); |
128 | m_PlayListSelection->addStringToSelection("nslookup "); | 128 | m_PlayListSelection->addStringToSelection("nslookup "); |
129 | m_PlayListSelection->addStringToSelection("ping "); | 129 | m_PlayListSelection->addStringToSelection("ping "); |
130 | m_PlayListSelection->addStringToSelection("ps aux"); | 130 | m_PlayListSelection->addStringToSelection("ps aux"); |
131 | m_PlayListSelection->addStringToSelection("pwd "); | 131 | m_PlayListSelection->addStringToSelection("pwd "); |
132 | m_PlayListSelection->addStringToSelection("rm "); | 132 | m_PlayListSelection->addStringToSelection("rm "); |
133 | m_PlayListSelection->addStringToSelection("rmdir "); | 133 | m_PlayListSelection->addStringToSelection("rmdir "); |
134 | m_PlayListSelection->addStringToSelection("route "); | 134 | m_PlayListSelection->addStringToSelection("route "); |
135 | m_PlayListSelection->addStringToSelection("set "); | 135 | m_PlayListSelection->addStringToSelection("set "); |
136 | m_PlayListSelection->addStringToSelection("traceroute"); | 136 | m_PlayListSelection->addStringToSelection("traceroute"); |
137 | 137 | ||
138 | } | 138 | } |
139 | } | 139 | } |
140 | CommandEditDialog::~CommandEditDialog() | 140 | CommandEditDialog::~CommandEditDialog() |
141 | { | 141 | { |
142 | } | 142 | } |
143 | 143 | ||
144 | void CommandEditDialog::accept() | 144 | void CommandEditDialog::accept() |
145 | { | 145 | { |
146 | int i = 0; | 146 | int i = 0; |
147 | Config *cfg = new Config("Konsole"); | 147 | Config *cfg = new Config("Konsole"); |
148 | cfg->setGroup("Commands"); | 148 | cfg->setGroup("Commands"); |
149 | cfg->clearGroup(); | 149 | cfg->clearGroup(); |
150 | 150 | ||
diff --git a/core/apps/embeddedkonsole/session.cpp b/core/apps/embeddedkonsole/session.cpp index 043b8db..a94712a 100644 --- a/core/apps/embeddedkonsole/session.cpp +++ b/core/apps/embeddedkonsole/session.cpp | |||
@@ -1,160 +1,160 @@ | |||
1 | /* -------------------------------------------------------------------------- */ | 1 | /* -------------------------------------------------------------------------- */ |
2 | /* */ | 2 | /* */ |
3 | /* Ported Konsole to Qt/Embedded */ | 3 | /* Ported Konsole to Qt/Embedded */ |
4 | /* */ | 4 | /* */ |
5 | /* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ | 5 | /* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ |
6 | /* */ | 6 | /* */ |
7 | /* -------------------------------------------------------------------------- */ | 7 | /* -------------------------------------------------------------------------- */ |
8 | #include "session.h" | 8 | #include "session.h" |
9 | // #include <kdebug.h> | 9 | // #include <kdebug.h> |
10 | 10 | ||
11 | #include <stdlib.h> | 11 | #include <stdlib.h> |
12 | 12 | ||
13 | #define HERE fprintf(stderr,"%s(%d): here\n",__FILE__,__LINE__) | 13 | #define HERE fprintf(stderr,"%s(%d): here\n",__FILE__,__LINE__) |
14 | 14 | ||
15 | /*! \class TESession | 15 | /*! \class TESession |
16 | 16 | ||
17 | Sessions are combinations of TEPTy and Emulations. | 17 | Sessions are combinations of TEPTy and Emulations. |
18 | 18 | ||
19 | The stuff in here does not belong to the terminal emulation framework, | 19 | The stuff in here does not belong to the terminal emulation framework, |
20 | but to main.C. It serves it's duty by providing a single reference | 20 | but to main.C. It serves it's duty by providing a single reference |
21 | to TEPTy/Emulation pairs. In fact, it is only there to demonstrate one | 21 | to TEPTy/Emulation pairs. In fact, it is only there to demonstrate one |
22 | of the abilities of the framework - multible sessions. | 22 | of the abilities of the framework - multible sessions. |
23 | */ | 23 | */ |
24 | 24 | ||
25 | TESession::TESession(QMainWindow* main, TEWidget* _te, const char* _pgm, QStrList & _args, const char *_term) : schema_no(0), font_no(3), pgm(_pgm), args(_args) | 25 | TESession::TESession(QMainWindow* main, TEWidget* _te, const char* _pgm, QStrList & _args, const char *_term) : schema_no(0), font_no(3), pgm(_pgm), args(_args) |
26 | { | 26 | { |
27 | te = _te; | 27 | te = _te; |
28 | term = _term; | 28 | term = _term; |
29 | 29 | ||
30 | // sh = new TEPty(); | 30 | // sh = new TEPty(); |
31 | sh = new MyPty(); | 31 | sh = new MyPty(); |
32 | em = new TEmuVt102(te); | 32 | em = new TEmuVt102(te); |
33 | 33 | ||
34 | sh->setSize(te->Lines(),te->Columns()); // not absolutely nessesary | 34 | sh->setSize(te->Lines(),te->Columns()); // not absolutely nessesary |
35 | QObject::connect( sh,SIGNAL(block_in(const char*,int)), | 35 | QObject::connect( sh,SIGNAL(block_in(const char*,int)), |
36 | em,SLOT(onRcvBlock(const char*,int)) ); | 36 | em,SLOT(onRcvBlock(const char*,int)) ); |
37 | QObject::connect( em,SIGNAL(ImageSizeChanged(int,int)), | 37 | QObject::connect( em,SIGNAL(ImageSizeChanged(int,int)), |
38 | sh,SLOT(setSize(int,int))); | 38 | sh,SLOT(setSize(int,int))); |
39 | 39 | ||
40 | // 'main' should do those connects itself, somehow. | 40 | // 'main' should do those connects itself, somehow. |
41 | // These aren't KTMW's slots, but konsole's.(David) | 41 | // These aren't KTMW's slots, but konsole's.(David) |
42 | 42 | ||
43 | /* | 43 | /* |
44 | QObject::connect( em,SIGNAL(ImageSizeChanged(int,int)), | 44 | QObject::connect( em,SIGNAL(ImageSizeChanged(int,int)), |
45 | main,SLOT(notifySize(int,int))); | 45 | main,SLOT(notifySize(int,int))); |
46 | */ | 46 | */ |
47 | QObject::connect( em,SIGNAL(sndBlock(const char*,int)), | 47 | QObject::connect( em,SIGNAL(sndBlock(const char*,int)), |
48 | sh,SLOT(send_bytes(const char*,int)) ); | 48 | sh,SLOT(send_bytes(const char*,int)) ); |
49 | QObject::connect( em,SIGNAL(changeColumns(int)), | 49 | QObject::connect( em,SIGNAL(changeColumns(int)), |
50 | main,SLOT(changeColumns(int)) ); | 50 | main,SLOT(changeColumns(int)) ); |
51 | 51 | ||
52 | 52 | ||
53 | 53 | ||
54 | QObject::connect( em,SIGNAL(changeTitle(int, const QString&)), | 54 | QObject::connect( em,SIGNAL(changeTitle(int,const QString&)), |
55 | this,SLOT(changeTitle(int, const QString&)) ); | 55 | this,SLOT(changeTitle(int,const QString&)) ); |
56 | 56 | ||
57 | QObject::connect( sh,SIGNAL(done(int)), this,SLOT(done(int)) ); | 57 | QObject::connect( sh,SIGNAL(done(int)), this,SLOT(done(int)) ); |
58 | } | 58 | } |
59 | 59 | ||
60 | 60 | ||
61 | 61 | ||
62 | void TESession::run() | 62 | void TESession::run() |
63 | { | 63 | { |
64 | //kdDebug() << "Running the session!" << pgm << "\n"; | 64 | //kdDebug() << "Running the session!" << pgm << "\n"; |
65 | sh->run(pgm,args,term.data(),FALSE); | 65 | sh->run(pgm,args,term.data(),FALSE); |
66 | } | 66 | } |
67 | 67 | ||
68 | void TESession::kill(int ) // signal) | 68 | void TESession::kill(int ) // signal) |
69 | { | 69 | { |
70 | // sh->kill(signal); | 70 | // sh->kill(signal); |
71 | } | 71 | } |
72 | 72 | ||
73 | TESession::~TESession() | 73 | TESession::~TESession() |
74 | { | 74 | { |
75 | QObject::disconnect( sh, SIGNAL( done( int ) ), | 75 | QObject::disconnect( sh, SIGNAL( done(int) ), |
76 | this, SLOT( done( int ) ) ); | 76 | this, SLOT( done(int) ) ); |
77 | delete em; | 77 | delete em; |
78 | delete sh; | 78 | delete sh; |
79 | } | 79 | } |
80 | 80 | ||
81 | void TESession::setConnect(bool c) | 81 | void TESession::setConnect(bool c) |
82 | { | 82 | { |
83 | em->setConnect(c); | 83 | em->setConnect(c); |
84 | } | 84 | } |
85 | 85 | ||
86 | void TESession::done(int status) | 86 | void TESession::done(int status) |
87 | { | 87 | { |
88 | emit done(te,status); | 88 | emit done(te,status); |
89 | } | 89 | } |
90 | 90 | ||
91 | void TESession::terminate() | 91 | void TESession::terminate() |
92 | { | 92 | { |
93 | delete this; | 93 | delete this; |
94 | } | 94 | } |
95 | 95 | ||
96 | TEmulation* TESession::getEmulation() | 96 | TEmulation* TESession::getEmulation() |
97 | { | 97 | { |
98 | return em; | 98 | return em; |
99 | } | 99 | } |
100 | 100 | ||
101 | // following interfaces might be misplaced /// | 101 | // following interfaces might be misplaced /// |
102 | 102 | ||
103 | int TESession::schemaNo() | 103 | int TESession::schemaNo() |
104 | { | 104 | { |
105 | return schema_no; | 105 | return schema_no; |
106 | } | 106 | } |
107 | 107 | ||
108 | int TESession::keymap() | 108 | int TESession::keymap() |
109 | { | 109 | { |
110 | return keymap_no; | 110 | return keymap_no; |
111 | } | 111 | } |
112 | 112 | ||
113 | int TESession::fontNo() | 113 | int TESession::fontNo() |
114 | { | 114 | { |
115 | return font_no; | 115 | return font_no; |
116 | } | 116 | } |
117 | 117 | ||
118 | const char* TESession::emuName() | 118 | const char* TESession::emuName() |
119 | { | 119 | { |
120 | return term.data(); | 120 | return term.data(); |
121 | } | 121 | } |
122 | 122 | ||
123 | void TESession::setSchemaNo(int sn) | 123 | void TESession::setSchemaNo(int sn) |
124 | { | 124 | { |
125 | schema_no = sn; | 125 | schema_no = sn; |
126 | } | 126 | } |
127 | 127 | ||
128 | void TESession::setKeymapNo(int kn) | 128 | void TESession::setKeymapNo(int kn) |
129 | { | 129 | { |
130 | keymap_no = kn; | 130 | keymap_no = kn; |
131 | em->setKeytrans(kn); | 131 | em->setKeytrans(kn); |
132 | } | 132 | } |
133 | 133 | ||
134 | void TESession::setFontNo(int fn) | 134 | void TESession::setFontNo(int fn) |
135 | { | 135 | { |
136 | font_no = fn; | 136 | font_no = fn; |
137 | } | 137 | } |
138 | 138 | ||
139 | void TESession::changeTitle(int, const QString& title) | 139 | void TESession::changeTitle(int, const QString& title) |
140 | { | 140 | { |
141 | this->title = title; | 141 | this->title = title; |
142 | emit changeTitle(te, title); | 142 | emit changeTitle(te, title); |
143 | } | 143 | } |
144 | 144 | ||
145 | const QString& TESession::Title() | 145 | const QString& TESession::Title() |
146 | { | 146 | { |
147 | return title; | 147 | return title; |
148 | } | 148 | } |
149 | 149 | ||
150 | void TESession::setHistory(bool on) | 150 | void TESession::setHistory(bool on) |
151 | { | 151 | { |
152 | em->setHistory( on ); | 152 | em->setHistory( on ); |
153 | } | 153 | } |
154 | 154 | ||
155 | bool TESession::history() | 155 | bool TESession::history() |
156 | { | 156 | { |
157 | return em->history(); | 157 | return em->history(); |
158 | } | 158 | } |
159 | 159 | ||
160 | // #include "session.moc" | 160 | // #include "session.moc" |
diff --git a/core/apps/helpbrowser/helpbrowser.cpp b/core/apps/helpbrowser/helpbrowser.cpp index 8fb0161..336d9fb 100644 --- a/core/apps/helpbrowser/helpbrowser.cpp +++ b/core/apps/helpbrowser/helpbrowser.cpp | |||
@@ -1,211 +1,211 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #define QTOPIA_INTERNAL_LANGLIST | 21 | #define QTOPIA_INTERNAL_LANGLIST |
22 | 22 | ||
23 | #include "helpbrowser.h" | 23 | #include "helpbrowser.h" |
24 | 24 | ||
25 | #include <qpe/qpeapplication.h> | 25 | #include <qpe/qpeapplication.h> |
26 | #include <qpe/resource.h> | 26 | #include <qpe/resource.h> |
27 | 27 | ||
28 | #include <qmenubar.h> | 28 | #include <qmenubar.h> |
29 | #include <qtoolbar.h> | 29 | #include <qtoolbar.h> |
30 | #include <qpe/qcopenvelope_qws.h> | 30 | #include <qpe/qcopenvelope_qws.h> |
31 | #include <qfileinfo.h> | 31 | #include <qfileinfo.h> |
32 | #include <qaction.h> | 32 | #include <qaction.h> |
33 | 33 | ||
34 | #include <cctype> | 34 | #include <cctype> |
35 | 35 | ||
36 | #include "magictextbrowser.h" | 36 | #include "magictextbrowser.h" |
37 | 37 | ||
38 | HelpBrowser::HelpBrowser( QWidget* parent, const char *name, WFlags f ) | 38 | HelpBrowser::HelpBrowser( QWidget* parent, const char *name, WFlags f ) |
39 | : QMainWindow( parent, name, f ), | 39 | : QMainWindow( parent, name, f ), |
40 | selectedURL() | 40 | selectedURL() |
41 | { | 41 | { |
42 | init( "index.html" ); | 42 | init( "index.html" ); |
43 | } | 43 | } |
44 | 44 | ||
45 | 45 | ||
46 | 46 | ||
47 | void HelpBrowser::init( const QString& _home ) | 47 | void HelpBrowser::init( const QString& _home ) |
48 | { | 48 | { |
49 | setIcon( Resource::loadPixmap( "HelpBrowser" ) ); | 49 | setIcon( Resource::loadPixmap( "HelpBrowser" ) ); |
50 | setBackgroundMode( PaletteButton ); | 50 | setBackgroundMode( PaletteButton ); |
51 | 51 | ||
52 | browser = new MagicTextBrowser( this ); | 52 | browser = new MagicTextBrowser( this ); |
53 | browser->setFrameStyle( QFrame::Panel | QFrame::Sunken ); | 53 | browser->setFrameStyle( QFrame::Panel | QFrame::Sunken ); |
54 | connect( browser, SIGNAL( textChanged() ), | 54 | connect( browser, SIGNAL( textChanged() ), |
55 | this, SLOT( textChanged() ) ); | 55 | this, SLOT( textChanged() ) ); |
56 | 56 | ||
57 | setCentralWidget( browser ); | 57 | setCentralWidget( browser ); |
58 | setToolBarsMovable( FALSE ); | 58 | setToolBarsMovable( FALSE ); |
59 | 59 | ||
60 | if ( !_home.isEmpty() ) | 60 | if ( !_home.isEmpty() ) |
61 | browser->setSource( _home ); | 61 | browser->setSource( _home ); |
62 | 62 | ||
63 | QToolBar* toolbar = new QToolBar( this ); | 63 | QToolBar* toolbar = new QToolBar( this ); |
64 | toolbar->setHorizontalStretchable( TRUE ); | 64 | toolbar->setHorizontalStretchable( TRUE ); |
65 | QMenuBar *menu = new QMenuBar( toolbar ); | 65 | QMenuBar *menu = new QMenuBar( toolbar ); |
66 | 66 | ||
67 | toolbar = new QToolBar( this ); | 67 | toolbar = new QToolBar( this ); |
68 | // addToolBar( toolbar, "Toolbar"); | 68 | // addToolBar( toolbar, "Toolbar"); |
69 | 69 | ||
70 | QPopupMenu* go = new QPopupMenu( this ); | 70 | QPopupMenu* go = new QPopupMenu( this ); |
71 | backAction = new QAction( tr( "Backward" ), Resource::loadIconSet( "back" ), QString::null, 0, this, 0 ); | 71 | backAction = new QAction( tr( "Backward" ), Resource::loadIconSet( "back" ), QString::null, 0, this, 0 ); |
72 | connect( backAction, SIGNAL( activated() ), browser, SLOT( backward() ) ); | 72 | connect( backAction, SIGNAL( activated() ), browser, SLOT( backward() ) ); |
73 | connect( browser, SIGNAL( backwardAvailable( bool ) ), | 73 | connect( browser, SIGNAL( backwardAvailable(bool) ), |
74 | backAction, SLOT( setEnabled( bool ) ) ); | 74 | backAction, SLOT( setEnabled(bool) ) ); |
75 | backAction->addTo( go ); | 75 | backAction->addTo( go ); |
76 | backAction->addTo( toolbar ); | 76 | backAction->addTo( toolbar ); |
77 | backAction->setEnabled( FALSE ); | 77 | backAction->setEnabled( FALSE ); |
78 | 78 | ||
79 | forwardAction = new QAction( tr( "Forward" ), Resource::loadIconSet( "forward" ), QString::null, 0, this, 0 ); | 79 | forwardAction = new QAction( tr( "Forward" ), Resource::loadIconSet( "forward" ), QString::null, 0, this, 0 ); |
80 | connect( forwardAction, SIGNAL( activated() ), browser, SLOT( forward() ) ); | 80 | connect( forwardAction, SIGNAL( activated() ), browser, SLOT( forward() ) ); |
81 | connect( browser, SIGNAL( forwardAvailable( bool ) ), | 81 | connect( browser, SIGNAL( forwardAvailable(bool) ), |
82 | forwardAction, SLOT( setEnabled( bool ) ) ); | 82 | forwardAction, SLOT( setEnabled(bool) ) ); |
83 | forwardAction->addTo( go ); | 83 | forwardAction->addTo( go ); |
84 | forwardAction->addTo( toolbar ); | 84 | forwardAction->addTo( toolbar ); |
85 | forwardAction->setEnabled( FALSE ); | 85 | forwardAction->setEnabled( FALSE ); |
86 | 86 | ||
87 | QAction *a = new QAction( tr( "Home" ), Resource::loadIconSet( "home" ), QString::null, 0, this, 0 ); | 87 | QAction *a = new QAction( tr( "Home" ), Resource::loadIconSet( "home" ), QString::null, 0, this, 0 ); |
88 | connect( a, SIGNAL( activated() ), browser, SLOT( home() ) ); | 88 | connect( a, SIGNAL( activated() ), browser, SLOT( home() ) ); |
89 | a->addTo( go ); | 89 | a->addTo( go ); |
90 | a->addTo( toolbar ); | 90 | a->addTo( toolbar ); |
91 | 91 | ||
92 | bookm = new QPopupMenu( this ); | 92 | bookm = new QPopupMenu( this ); |
93 | bookm->insertItem( tr( "Add Bookmark" ), this, SLOT( addBookmark() ) ); | 93 | bookm->insertItem( tr( "Add Bookmark" ), this, SLOT( addBookmark() ) ); |
94 | bookm->insertItem( tr( "Remove from Bookmarks" ), this, SLOT( removeBookmark() ) ); | 94 | bookm->insertItem( tr( "Remove from Bookmarks" ), this, SLOT( removeBookmark() ) ); |
95 | bookm->insertSeparator(); | 95 | bookm->insertSeparator(); |
96 | connect( bookm, SIGNAL( activated( int ) ), | 96 | connect( bookm, SIGNAL( activated(int) ), |
97 | this, SLOT( bookmChosen( int ) ) ); | 97 | this, SLOT( bookmChosen(int) ) ); |
98 | 98 | ||
99 | readBookmarks(); | 99 | readBookmarks(); |
100 | 100 | ||
101 | menu->insertItem( tr("Go"), go ); | 101 | menu->insertItem( tr("Go"), go ); |
102 | menu->insertItem( tr( "Bookmarks" ), bookm ); | 102 | menu->insertItem( tr( "Bookmarks" ), bookm ); |
103 | 103 | ||
104 | resize( 240, 300 ); | 104 | resize( 240, 300 ); |
105 | browser->setFocus(); | 105 | browser->setFocus(); |
106 | browser->setFrameStyle( QFrame::NoFrame ); | 106 | browser->setFrameStyle( QFrame::NoFrame ); |
107 | 107 | ||
108 | #if !defined(QT_NO_COP) | 108 | #if !defined(QT_NO_COP) |
109 | QCopChannel *addressChannel = new QCopChannel("QPE/HelpBrowser" , this ); | 109 | QCopChannel *addressChannel = new QCopChannel("QPE/HelpBrowser" , this ); |
110 | connect (addressChannel, SIGNAL( received(const QCString &, const QByteArray &)), | 110 | connect (addressChannel, SIGNAL( received(const QCString&,const QByteArray&)), |
111 | this, SLOT ( appMessage(const QCString &, const QByteArray &) ) ); | 111 | this, SLOT ( appMessage(const QCString&,const QByteArray&) ) ); |
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray&)), | 114 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), |
115 | this, SLOT(appMessage(const QCString&, const QByteArray&)) ); | 115 | this, SLOT(appMessage(const QCString&,const QByteArray&)) ); |
116 | } | 116 | } |
117 | 117 | ||
118 | void HelpBrowser::appMessage(const QCString& msg, const QByteArray& data) | 118 | void HelpBrowser::appMessage(const QCString& msg, const QByteArray& data) |
119 | { | 119 | { |
120 | qDebug("reached appMessage"); | 120 | qDebug("reached appMessage"); |
121 | if ( msg == "showFile(QString)" ) { | 121 | if ( msg == "showFile(QString)" ) { |
122 | QDataStream ds(data,IO_ReadOnly); | 122 | QDataStream ds(data,IO_ReadOnly); |
123 | QString fn; | 123 | QString fn; |
124 | ds >> fn; | 124 | ds >> fn; |
125 | setDocument( fn ); | 125 | setDocument( fn ); |
126 | 126 | ||
127 | QPEApplication::setKeepRunning(); | 127 | QPEApplication::setKeepRunning(); |
128 | 128 | ||
129 | showMaximized(); | 129 | showMaximized(); |
130 | setActiveWindow(); | 130 | setActiveWindow(); |
131 | raise(); | 131 | raise(); |
132 | } | 132 | } |
133 | } | 133 | } |
134 | 134 | ||
135 | void HelpBrowser::setDocument( const QString &doc ) | 135 | void HelpBrowser::setDocument( const QString &doc ) |
136 | { | 136 | { |
137 | if ( !doc.isEmpty() ) | 137 | if ( !doc.isEmpty() ) |
138 | browser->setSource( doc ); | 138 | browser->setSource( doc ); |
139 | raise(); | 139 | raise(); |
140 | } | 140 | } |
141 | 141 | ||
142 | 142 | ||
143 | void HelpBrowser::textChanged() | 143 | void HelpBrowser::textChanged() |
144 | { | 144 | { |
145 | if ( browser->documentTitle().isNull() ) | 145 | if ( browser->documentTitle().isNull() ) |
146 | setCaption( tr("Help Browser") ); | 146 | setCaption( tr("Help Browser") ); |
147 | else | 147 | else |
148 | setCaption( browser->documentTitle() ) ; | 148 | setCaption( browser->documentTitle() ) ; |
149 | 149 | ||
150 | selectedURL = caption(); | 150 | selectedURL = caption(); |
151 | } | 151 | } |
152 | 152 | ||
153 | HelpBrowser::~HelpBrowser() | 153 | HelpBrowser::~HelpBrowser() |
154 | { | 154 | { |
155 | QStringList bookmarks; | 155 | QStringList bookmarks; |
156 | QMap<int, Bookmark>::Iterator it2 = mBookmarks.begin(); | 156 | QMap<int, Bookmark>::Iterator it2 = mBookmarks.begin(); |
157 | for ( ; it2 != mBookmarks.end(); ++it2 ) | 157 | for ( ; it2 != mBookmarks.end(); ++it2 ) |
158 | bookmarks.append( (*it2).name + "=" + (*it2).file ); | 158 | bookmarks.append( (*it2).name + "=" + (*it2).file ); |
159 | 159 | ||
160 | QFile f2( Global::applicationFileName("helpbrowser", "bookmarks") ); | 160 | QFile f2( Global::applicationFileName("helpbrowser", "bookmarks") ); |
161 | if ( f2.open( IO_WriteOnly ) ) { | 161 | if ( f2.open( IO_WriteOnly ) ) { |
162 | QDataStream s2( &f2 ); | 162 | QDataStream s2( &f2 ); |
163 | s2 << bookmarks; | 163 | s2 << bookmarks; |
164 | f2.close(); | 164 | f2.close(); |
165 | } | 165 | } |
166 | } | 166 | } |
167 | 167 | ||
168 | void HelpBrowser::pathSelected( const QString &_path ) | 168 | void HelpBrowser::pathSelected( const QString &_path ) |
169 | { | 169 | { |
170 | browser->setSource( _path ); | 170 | browser->setSource( _path ); |
171 | } | 171 | } |
172 | 172 | ||
173 | void HelpBrowser::readBookmarks() | 173 | void HelpBrowser::readBookmarks() |
174 | { | 174 | { |
175 | QString file = Global::applicationFileName("helpbrowser", "bookmarks"); | 175 | QString file = Global::applicationFileName("helpbrowser", "bookmarks"); |
176 | if ( QFile::exists( file ) ) { | 176 | if ( QFile::exists( file ) ) { |
177 | QStringList bookmarks; | 177 | QStringList bookmarks; |
178 | QFile f( file ); | 178 | QFile f( file ); |
179 | if ( f.open( IO_ReadOnly ) ) { | 179 | if ( f.open( IO_ReadOnly ) ) { |
180 | QDataStream s( &f ); | 180 | QDataStream s( &f ); |
181 | s >> bookmarks; | 181 | s >> bookmarks; |
182 | f.close(); | 182 | f.close(); |
183 | } | 183 | } |
184 | QStringList::Iterator it = bookmarks.begin(); | 184 | QStringList::Iterator it = bookmarks.begin(); |
185 | for ( ; it != bookmarks.end(); ++it ) { | 185 | for ( ; it != bookmarks.end(); ++it ) { |
186 | Bookmark b; | 186 | Bookmark b; |
187 | QString current = *it; | 187 | QString current = *it; |
188 | int equal = current.find( "=" ); | 188 | int equal = current.find( "=" ); |
189 | if ( equal < 1 || equal == (int)current.length() - 1 ) | 189 | if ( equal < 1 || equal == (int)current.length() - 1 ) |
190 | continue; | 190 | continue; |
191 | b.name = current.left( equal ); | 191 | b.name = current.left( equal ); |
192 | b.file = current.mid( equal + 1 ); | 192 | b.file = current.mid( equal + 1 ); |
193 | mBookmarks[ bookm->insertItem( b.name ) ] = b; | 193 | mBookmarks[ bookm->insertItem( b.name ) ] = b; |
194 | } | 194 | } |
195 | } | 195 | } |
196 | } | 196 | } |
197 | 197 | ||
198 | void HelpBrowser::bookmChosen( int i ) | 198 | void HelpBrowser::bookmChosen( int i ) |
199 | { | 199 | { |
200 | if ( mBookmarks.contains( i ) ) | 200 | if ( mBookmarks.contains( i ) ) |
201 | browser->setSource( mBookmarks[ i ].file ); | 201 | browser->setSource( mBookmarks[ i ].file ); |
202 | } | 202 | } |
203 | 203 | ||
204 | void HelpBrowser::addBookmark() | 204 | void HelpBrowser::addBookmark() |
205 | { | 205 | { |
206 | Bookmark b; | 206 | Bookmark b; |
207 | b.name = browser->documentTitle(); | 207 | b.name = browser->documentTitle(); |
208 | b.file = browser->source(); | 208 | b.file = browser->source(); |
209 | if (b.name.isEmpty() ) { | 209 | if (b.name.isEmpty() ) { |
210 | b.name = b.file.left( b.file.length() - 5 ); // remove .html | 210 | b.name = b.file.left( b.file.length() - 5 ); // remove .html |
211 | } | 211 | } |
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp index 55725cc..b54da34 100644 --- a/core/apps/textedit/textedit.cpp +++ b/core/apps/textedit/textedit.cpp | |||
@@ -70,355 +70,355 @@ signals: | |||
70 | 70 | ||
71 | private: | 71 | private: |
72 | 72 | ||
73 | }; | 73 | }; |
74 | 74 | ||
75 | void QpeEditor::mousePressEvent( QMouseEvent *e ) { | 75 | void QpeEditor::mousePressEvent( QMouseEvent *e ) { |
76 | switch(e->button()) { | 76 | switch(e->button()) { |
77 | case RightButton: | 77 | case RightButton: |
78 | { //rediculous workaround for qt popup menu | 78 | { //rediculous workaround for qt popup menu |
79 | //and the hold right click mechanism | 79 | //and the hold right click mechanism |
80 | this->setSelection( line1, col1, line2, col2); | 80 | this->setSelection( line1, col1, line2, col2); |
81 | QMultiLineEdit::mousePressEvent( e ); | 81 | QMultiLineEdit::mousePressEvent( e ); |
82 | markIt = false; | 82 | markIt = false; |
83 | } | 83 | } |
84 | break; | 84 | break; |
85 | default: | 85 | default: |
86 | { | 86 | { |
87 | if(!markIt) { | 87 | if(!markIt) { |
88 | int line, col; | 88 | int line, col; |
89 | this->getCursorPosition(&line, &col); | 89 | this->getCursorPosition(&line, &col); |
90 | line1=line2=line; | 90 | line1=line2=line; |
91 | col1=col2=col; | 91 | col1=col2=col; |
92 | } | 92 | } |
93 | QMultiLineEdit::mousePressEvent( e ); | 93 | QMultiLineEdit::mousePressEvent( e ); |
94 | } | 94 | } |
95 | break; | 95 | break; |
96 | }; | 96 | }; |
97 | } | 97 | } |
98 | 98 | ||
99 | void QpeEditor::mouseReleaseEvent( QMouseEvent * ) { | 99 | void QpeEditor::mouseReleaseEvent( QMouseEvent * ) { |
100 | if(this->hasMarkedText()) { | 100 | if(this->hasMarkedText()) { |
101 | markIt = true; | 101 | markIt = true; |
102 | this->getMarkedRegion( &line1, &col1, &line2, & col2 ); | 102 | this->getMarkedRegion( &line1, &col1, &line2, & col2 ); |
103 | } else { | 103 | } else { |
104 | markIt = false; | 104 | markIt = false; |
105 | } | 105 | } |
106 | } | 106 | } |
107 | 107 | ||
108 | void QpeEditor::find ( const QString &txt, bool caseSensitive, | 108 | void QpeEditor::find ( const QString &txt, bool caseSensitive, |
109 | bool backwards ) | 109 | bool backwards ) |
110 | { | 110 | { |
111 | static bool wrap = false; | 111 | static bool wrap = false; |
112 | int line, col; | 112 | int line, col; |
113 | if ( wrap ) { | 113 | if ( wrap ) { |
114 | if ( !backwards ) | 114 | if ( !backwards ) |
115 | line = col = 0; | 115 | line = col = 0; |
116 | wrap = false; | 116 | wrap = false; |
117 | // emit searchWrapped(); | 117 | // emit searchWrapped(); |
118 | } else { | 118 | } else { |
119 | getCursorPosition( &line, &col ); | 119 | getCursorPosition( &line, &col ); |
120 | } | 120 | } |
121 | //ignore backwards for now.... | 121 | //ignore backwards for now.... |
122 | if ( !backwards ) { | 122 | if ( !backwards ) { |
123 | for ( ; ; ) { | 123 | for ( ; ; ) { |
124 | if ( line >= numLines() ) { | 124 | if ( line >= numLines() ) { |
125 | wrap = true; | 125 | wrap = true; |
126 | //emit notFound(); | 126 | //emit notFound(); |
127 | break; | 127 | break; |
128 | } | 128 | } |
129 | int findCol = getString( line )->find( txt, col, caseSensitive ); | 129 | int findCol = getString( line )->find( txt, col, caseSensitive ); |
130 | if ( findCol >= 0 ) { | 130 | if ( findCol >= 0 ) { |
131 | setCursorPosition( line, findCol, false ); | 131 | setCursorPosition( line, findCol, false ); |
132 | col = findCol + txt.length(); | 132 | col = findCol + txt.length(); |
133 | setCursorPosition( line, col, true ); | 133 | setCursorPosition( line, col, true ); |
134 | 134 | ||
135 | //found = true; | 135 | //found = true; |
136 | break; | 136 | break; |
137 | } | 137 | } |
138 | line++; | 138 | line++; |
139 | col = 0; | 139 | col = 0; |
140 | } | 140 | } |
141 | } | 141 | } |
142 | } | 142 | } |
143 | 143 | ||
144 | 144 | ||
145 | #else | 145 | #else |
146 | 146 | ||
147 | #error "Must make a QpeEditor that inherits QTextEdit" | 147 | #error "Must make a QpeEditor that inherits QTextEdit" |
148 | 148 | ||
149 | #endif | 149 | #endif |
150 | 150 | ||
151 | 151 | ||
152 | static const int nfontsizes = 6; | 152 | static const int nfontsizes = 6; |
153 | static const int fontsize[nfontsizes] = {8,10,12,14,18,24}; | 153 | static const int fontsize[nfontsizes] = {8,10,12,14,18,24}; |
154 | 154 | ||
155 | TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) | 155 | TextEdit::TextEdit( QWidget *parent, const char *name, WFlags f ) |
156 | : QMainWindow( parent, name, f ), bFromDocView( false ) | 156 | : QMainWindow( parent, name, f ), bFromDocView( false ) |
157 | { | 157 | { |
158 | doc = 0; | 158 | doc = 0; |
159 | edited=false; | 159 | edited=false; |
160 | fromSetDocument=false; | 160 | fromSetDocument=false; |
161 | 161 | ||
162 | setToolBarsMovable( false ); | 162 | setToolBarsMovable( false ); |
163 | connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); | 163 | connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); |
164 | 164 | ||
165 | channel = new QCopChannel( "QPE/Application/textedit", this ); | 165 | channel = new QCopChannel( "QPE/Application/textedit", this ); |
166 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), | 166 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
167 | this, SLOT(receive(const QCString&, const QByteArray&)) ); | 167 | this, SLOT(receive(const QCString&,const QByteArray&)) ); |
168 | 168 | ||
169 | setIcon( Resource::loadPixmap( "TextEditor" ) ); | 169 | setIcon( Resource::loadPixmap( "TextEditor" ) ); |
170 | 170 | ||
171 | QToolBar *bar = new QToolBar( this ); | 171 | QToolBar *bar = new QToolBar( this ); |
172 | bar->setHorizontalStretchable( true ); | 172 | bar->setHorizontalStretchable( true ); |
173 | menu = bar; | 173 | menu = bar; |
174 | 174 | ||
175 | QMenuBar *mb = new QMenuBar( bar ); | 175 | QMenuBar *mb = new QMenuBar( bar ); |
176 | QPopupMenu *file = new QPopupMenu( this ); | 176 | QPopupMenu *file = new QPopupMenu( this ); |
177 | QPopupMenu *edit = new QPopupMenu( this ); | 177 | QPopupMenu *edit = new QPopupMenu( this ); |
178 | QPopupMenu *advancedMenu = new QPopupMenu(this); | 178 | QPopupMenu *advancedMenu = new QPopupMenu(this); |
179 | 179 | ||
180 | font = new QPopupMenu( this ); | 180 | font = new QPopupMenu( this ); |
181 | 181 | ||
182 | bar = new QToolBar( this ); | 182 | bar = new QToolBar( this ); |
183 | editBar = bar; | 183 | editBar = bar; |
184 | 184 | ||
185 | QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), | 185 | QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), |
186 | QString::null, 0, this, 0 ); | 186 | QString::null, 0, this, 0 ); |
187 | connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); | 187 | connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); |
188 | // a->addTo( bar ); | 188 | // a->addTo( bar ); |
189 | a->addTo( file ); | 189 | a->addTo( file ); |
190 | 190 | ||
191 | a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), | 191 | a = new QAction( tr( "Open" ), Resource::loadPixmap( "fileopen" ), |
192 | QString::null, 0, this, 0 ); | 192 | QString::null, 0, this, 0 ); |
193 | connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); | 193 | connect( a, SIGNAL( activated() ), this, SLOT( fileOpen() ) ); |
194 | a->addTo( bar ); | 194 | a->addTo( bar ); |
195 | a->addTo( file ); | 195 | a->addTo( file ); |
196 | 196 | ||
197 | a = new QAction( tr( "Save" ), Resource::loadPixmap("save") , | 197 | a = new QAction( tr( "Save" ), Resource::loadPixmap("save") , |
198 | QString::null, 0, this, 0 ); | 198 | QString::null, 0, this, 0 ); |
199 | connect( a, SIGNAL( activated() ), this, SLOT( save() ) ); | 199 | connect( a, SIGNAL( activated() ), this, SLOT( save() ) ); |
200 | file->insertSeparator(); | 200 | file->insertSeparator(); |
201 | a->addTo( bar ); | 201 | a->addTo( bar ); |
202 | a->addTo( file ); | 202 | a->addTo( file ); |
203 | 203 | ||
204 | a = new QAction( tr( "Save As" ), Resource::loadPixmap("save") , | 204 | a = new QAction( tr( "Save As" ), Resource::loadPixmap("save") , |
205 | QString::null, 0, this, 0 ); | 205 | QString::null, 0, this, 0 ); |
206 | connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) ); | 206 | connect( a, SIGNAL( activated() ), this, SLOT( saveAs() ) ); |
207 | a->addTo( file ); | 207 | a->addTo( file ); |
208 | 208 | ||
209 | a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), | 209 | a = new QAction( tr( "Cut" ), Resource::loadPixmap( "cut" ), |
210 | QString::null, 0, this, 0 ); | 210 | QString::null, 0, this, 0 ); |
211 | connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); | 211 | connect( a, SIGNAL( activated() ), this, SLOT( editCut() ) ); |
212 | a->addTo( editBar ); | 212 | a->addTo( editBar ); |
213 | a->addTo( edit ); | 213 | a->addTo( edit ); |
214 | 214 | ||
215 | a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), | 215 | a = new QAction( tr( "Copy" ), Resource::loadPixmap( "copy" ), |
216 | QString::null, 0, this, 0 ); | 216 | QString::null, 0, this, 0 ); |
217 | connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) ); | 217 | connect( a, SIGNAL( activated() ), this, SLOT( editCopy() ) ); |
218 | a->addTo( editBar ); | 218 | a->addTo( editBar ); |
219 | a->addTo( edit ); | 219 | a->addTo( edit ); |
220 | 220 | ||
221 | a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), | 221 | a = new QAction( tr( "Paste" ), Resource::loadPixmap( "paste" ), |
222 | QString::null, 0, this, 0 ); | 222 | QString::null, 0, this, 0 ); |
223 | connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); | 223 | connect( a, SIGNAL( activated() ), this, SLOT( editPaste() ) ); |
224 | a->addTo( editBar ); | 224 | a->addTo( editBar ); |
225 | a->addTo( edit ); | 225 | a->addTo( edit ); |
226 | 226 | ||
227 | 227 | ||
228 | #ifndef QT_NO_CLIPBOARD | 228 | #ifndef QT_NO_CLIPBOARD |
229 | a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), | 229 | a = new QAction( tr( "Insert Time and Date" ), Resource::loadPixmap( "paste" ), |
230 | QString::null, 0, this, 0 ); | 230 | QString::null, 0, this, 0 ); |
231 | connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) ); | 231 | connect( a, SIGNAL( activated() ), this, SLOT( editPasteTimeDate() ) ); |
232 | a->addTo( edit ); | 232 | a->addTo( edit ); |
233 | #endif | 233 | #endif |
234 | 234 | ||
235 | a = new QAction( tr( "Goto Line..." ), Resource::loadPixmap( "find" ), | 235 | a = new QAction( tr( "Goto Line..." ), Resource::loadPixmap( "find" ), |
236 | QString::null, 0, this, 0 ); | 236 | QString::null, 0, this, 0 ); |
237 | connect( a, SIGNAL( activated() ), this, SLOT( gotoLine() ) ); | 237 | connect( a, SIGNAL( activated() ), this, SLOT( gotoLine() ) ); |
238 | edit->insertSeparator(); | 238 | edit->insertSeparator(); |
239 | a->addTo( edit ); | 239 | a->addTo( edit ); |
240 | 240 | ||
241 | a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), | 241 | a = new QAction( tr( "Find..." ), Resource::loadPixmap( "find" ), |
242 | QString::null, 0, this, 0 ); | 242 | QString::null, 0, this, 0 ); |
243 | connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); | 243 | connect( a, SIGNAL( activated() ), this, SLOT( editFind() ) ); |
244 | a->addTo( bar ); | 244 | a->addTo( bar ); |
245 | a->addTo( edit ); | 245 | a->addTo( edit ); |
246 | 246 | ||
247 | zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); | 247 | zin = new QAction( tr("Zoom in"), QString::null, 0, this, 0 ); |
248 | connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); | 248 | connect( zin, SIGNAL( activated() ), this, SLOT( zoomIn() ) ); |
249 | zin->addTo( font ); | 249 | zin->addTo( font ); |
250 | 250 | ||
251 | zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); | 251 | zout = new QAction( tr("Zoom out"), QString::null, 0, this, 0 ); |
252 | connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); | 252 | connect( zout, SIGNAL( activated() ), this, SLOT( zoomOut() ) ); |
253 | zout->addTo( font ); | 253 | zout->addTo( font ); |
254 | 254 | ||
255 | font->insertSeparator(); | 255 | font->insertSeparator(); |
256 | 256 | ||
257 | font->insertItem(tr("Font"), this, SLOT(changeFont()) ); | 257 | font->insertItem(tr("Font"), this, SLOT(changeFont()) ); |
258 | 258 | ||
259 | font->insertSeparator(); | 259 | font->insertSeparator(); |
260 | font->insertItem(tr("Advanced Features"), advancedMenu); | 260 | font->insertItem(tr("Advanced Features"), advancedMenu); |
261 | 261 | ||
262 | QAction *wa = new QAction( tr("Wrap lines"), | 262 | QAction *wa = new QAction( tr("Wrap lines"), |
263 | QString::null, 0, this, 0 ); | 263 | QString::null, 0, this, 0 ); |
264 | connect( wa, SIGNAL( toggled(bool) ), | 264 | connect( wa, SIGNAL( toggled(bool) ), |
265 | this, SLOT( setWordWrap(bool) ) ); | 265 | this, SLOT( setWordWrap(bool) ) ); |
266 | wa->setToggleAction(true); | 266 | wa->setToggleAction(true); |
267 | wa->addTo( advancedMenu); | 267 | wa->addTo( advancedMenu); |
268 | 268 | ||
269 | nStart = new QAction( tr("Start with new file"), | 269 | nStart = new QAction( tr("Start with new file"), |
270 | QString::null, 0, this, 0 ); | 270 | QString::null, 0, this, 0 ); |
271 | connect( nStart, SIGNAL( toggled(bool) ), | 271 | connect( nStart, SIGNAL( toggled(bool) ), |
272 | this, SLOT( changeStartConfig(bool) ) ); | 272 | this, SLOT( changeStartConfig(bool) ) ); |
273 | nStart->setToggleAction(true); | 273 | nStart->setToggleAction(true); |
274 | nStart->addTo( advancedMenu ); | 274 | nStart->addTo( advancedMenu ); |
275 | nStart->setEnabled(false); | 275 | nStart->setEnabled(false); |
276 | 276 | ||
277 | nAdvanced = new QAction( tr("Prompt on Exit"), | 277 | nAdvanced = new QAction( tr("Prompt on Exit"), |
278 | QString::null, 0, this, 0 ); | 278 | QString::null, 0, this, 0 ); |
279 | connect( nAdvanced, SIGNAL( toggled(bool) ), | 279 | connect( nAdvanced, SIGNAL( toggled(bool) ), |
280 | this, SLOT( doPrompt(bool) ) ); | 280 | this, SLOT( doPrompt(bool) ) ); |
281 | nAdvanced->setToggleAction(true); | 281 | nAdvanced->setToggleAction(true); |
282 | nAdvanced->addTo( advancedMenu ); | 282 | nAdvanced->addTo( advancedMenu ); |
283 | 283 | ||
284 | desktopAction = new QAction( tr("Always open linked file"), | 284 | desktopAction = new QAction( tr("Always open linked file"), |
285 | QString::null, 0, this, 0 ); | 285 | QString::null, 0, this, 0 ); |
286 | connect( desktopAction, SIGNAL( toggled(bool) ), | 286 | connect( desktopAction, SIGNAL( toggled(bool) ), |
287 | this, SLOT( doDesktop(bool) ) ); | 287 | this, SLOT( doDesktop(bool) ) ); |
288 | desktopAction->setToggleAction(true); | 288 | desktopAction->setToggleAction(true); |
289 | desktopAction->addTo( advancedMenu); | 289 | desktopAction->addTo( advancedMenu); |
290 | 290 | ||
291 | filePermAction = new QAction( tr("File Permissions"), | 291 | filePermAction = new QAction( tr("File Permissions"), |
292 | QString::null, 0, this, 0 ); | 292 | QString::null, 0, this, 0 ); |
293 | connect( filePermAction, SIGNAL( toggled(bool) ), | 293 | connect( filePermAction, SIGNAL( toggled(bool) ), |
294 | this, SLOT( doFilePerms(bool) ) ); | 294 | this, SLOT( doFilePerms(bool) ) ); |
295 | filePermAction->setToggleAction(true); | 295 | filePermAction->setToggleAction(true); |
296 | filePermAction->addTo( advancedMenu); | 296 | filePermAction->addTo( advancedMenu); |
297 | 297 | ||
298 | searchBarAction = new QAction( tr("Search Bar Open"), | 298 | searchBarAction = new QAction( tr("Search Bar Open"), |
299 | QString::null, 0, this, 0 ); | 299 | QString::null, 0, this, 0 ); |
300 | connect( searchBarAction, SIGNAL( toggled(bool) ), | 300 | connect( searchBarAction, SIGNAL( toggled(bool) ), |
301 | this, SLOT( setSearchBar(bool) ) ); | 301 | this, SLOT( setSearchBar(bool) ) ); |
302 | searchBarAction->setToggleAction(true); | 302 | searchBarAction->setToggleAction(true); |
303 | searchBarAction->addTo( advancedMenu); | 303 | searchBarAction->addTo( advancedMenu); |
304 | 304 | ||
305 | nAutoSave = new QAction( tr("Auto Save 5 min."), | 305 | nAutoSave = new QAction( tr("Auto Save 5 min."), |
306 | QString::null, 0, this, 0 ); | 306 | QString::null, 0, this, 0 ); |
307 | connect( nAutoSave, SIGNAL( toggled(bool) ), | 307 | connect( nAutoSave, SIGNAL( toggled(bool) ), |
308 | this, SLOT( doTimer(bool) ) ); | 308 | this, SLOT( doTimer(bool) ) ); |
309 | nAutoSave->setToggleAction(true); | 309 | nAutoSave->setToggleAction(true); |
310 | nAutoSave->addTo( advancedMenu); | 310 | nAutoSave->addTo( advancedMenu); |
311 | 311 | ||
312 | 312 | ||
313 | //font->insertSeparator(); | 313 | //font->insertSeparator(); |
314 | 314 | ||
315 | //font->insertItem(tr("About"), this, SLOT( doAbout()) ); | 315 | //font->insertItem(tr("About"), this, SLOT( doAbout()) ); |
316 | 316 | ||
317 | mb->insertItem( tr( "File" ), file ); | 317 | mb->insertItem( tr( "File" ), file ); |
318 | mb->insertItem( tr( "Edit" ), edit ); | 318 | mb->insertItem( tr( "Edit" ), edit ); |
319 | mb->insertItem( tr( "View" ), font ); | 319 | mb->insertItem( tr( "View" ), font ); |
320 | 320 | ||
321 | searchBar = new QToolBar(this); | 321 | searchBar = new QToolBar(this); |
322 | addToolBar( searchBar, "Search", QMainWindow::Top, true ); | 322 | addToolBar( searchBar, "Search", QMainWindow::Top, true ); |
323 | 323 | ||
324 | searchBar->setHorizontalStretchable( true ); | 324 | searchBar->setHorizontalStretchable( true ); |
325 | 325 | ||
326 | searchEdit = new QLineEdit( searchBar, "searchEdit" ); | 326 | searchEdit = new QLineEdit( searchBar, "searchEdit" ); |
327 | searchBar->setStretchableWidget( searchEdit ); | 327 | searchBar->setStretchableWidget( searchEdit ); |
328 | connect( searchEdit, SIGNAL( textChanged( const QString & ) ), | 328 | connect( searchEdit, SIGNAL( textChanged(const QString&) ), |
329 | this, SLOT( search() ) ); | 329 | this, SLOT( search() ) ); |
330 | 330 | ||
331 | a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), | 331 | a = new QAction( tr( "Find Next" ), Resource::loadPixmap( "next" ), |
332 | QString::null, 0, this, 0 ); | 332 | QString::null, 0, this, 0 ); |
333 | connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); | 333 | connect( a, SIGNAL( activated() ), this, SLOT( findNext() ) ); |
334 | a->addTo( searchBar ); | 334 | a->addTo( searchBar ); |
335 | a->addTo( edit ); | 335 | a->addTo( edit ); |
336 | 336 | ||
337 | a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), | 337 | a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), |
338 | QString::null, 0, this, 0 ); | 338 | QString::null, 0, this, 0 ); |
339 | connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); | 339 | connect( a, SIGNAL( activated() ), this, SLOT( findClose() ) ); |
340 | a->addTo( searchBar ); | 340 | a->addTo( searchBar ); |
341 | 341 | ||
342 | edit->insertSeparator(); | 342 | edit->insertSeparator(); |
343 | a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), | 343 | a = new QAction( tr( "Delete" ), Resource::loadPixmap( "close" ), |
344 | QString::null, 0, this, 0 ); | 344 | QString::null, 0, this, 0 ); |
345 | connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) ); | 345 | connect( a, SIGNAL( activated() ), this, SLOT( editDelete() ) ); |
346 | a->addTo( edit ); | 346 | a->addTo( edit ); |
347 | 347 | ||
348 | searchBar->hide(); | 348 | searchBar->hide(); |
349 | 349 | ||
350 | editor = new QpeEditor( this ); | 350 | editor = new QpeEditor( this ); |
351 | setCentralWidget( editor ); | 351 | setCentralWidget( editor ); |
352 | editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); | 352 | editor->setFrameStyle( QFrame::Panel | QFrame::Sunken ); |
353 | connect( editor, SIGNAL( textChanged() ), | 353 | connect( editor, SIGNAL( textChanged() ), |
354 | this, SLOT( editorChanged() ) ); | 354 | this, SLOT( editorChanged() ) ); |
355 | 355 | ||
356 | QPEApplication::setStylusOperation( editor, QPEApplication::RightOnHold); | 356 | QPEApplication::setStylusOperation( editor, QPEApplication::RightOnHold); |
357 | 357 | ||
358 | Config cfg("TextEdit"); | 358 | Config cfg("TextEdit"); |
359 | cfg. setGroup ( "Font" ); | 359 | cfg. setGroup ( "Font" ); |
360 | 360 | ||
361 | QFont defaultFont = editor-> font ( ); | 361 | QFont defaultFont = editor-> font ( ); |
362 | 362 | ||
363 | QString family = cfg. readEntry ( "Family", defaultFont. family ( )); | 363 | QString family = cfg. readEntry ( "Family", defaultFont. family ( )); |
364 | int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( )); | 364 | int size = cfg. readNumEntry ( "Size", defaultFont. pointSize ( )); |
365 | int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( )); | 365 | int weight = cfg. readNumEntry ( "Weight", defaultFont. weight ( )); |
366 | bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( )); | 366 | bool italic = cfg. readBoolEntry ( "Italic", defaultFont. italic ( )); |
367 | 367 | ||
368 | defaultFont = QFont ( family, size, weight, italic ); | 368 | defaultFont = QFont ( family, size, weight, italic ); |
369 | editor-> setFont ( defaultFont ); | 369 | editor-> setFont ( defaultFont ); |
370 | // updateCaption(); | 370 | // updateCaption(); |
371 | 371 | ||
372 | cfg.setGroup ( "View" ); | 372 | cfg.setGroup ( "View" ); |
373 | 373 | ||
374 | promptExit = cfg.readBoolEntry ( "PromptExit", false ); | 374 | promptExit = cfg.readBoolEntry ( "PromptExit", false ); |
375 | openDesktop = cfg.readBoolEntry ( "OpenDesktop", true ); | 375 | openDesktop = cfg.readBoolEntry ( "OpenDesktop", true ); |
376 | filePerms = cfg.readBoolEntry ( "FilePermissions", false ); | 376 | filePerms = cfg.readBoolEntry ( "FilePermissions", false ); |
377 | useSearchBar = cfg.readBoolEntry ( "SearchBar", false ); | 377 | useSearchBar = cfg.readBoolEntry ( "SearchBar", false ); |
378 | startWithNew = cfg.readBoolEntry ( "startNew", true); | 378 | startWithNew = cfg.readBoolEntry ( "startNew", true); |
379 | featureAutoSave = cfg.readBoolEntry( "autosave", false); | 379 | featureAutoSave = cfg.readBoolEntry( "autosave", false); |
380 | 380 | ||
381 | if(useSearchBar) searchBarAction->setOn(true); | 381 | if(useSearchBar) searchBarAction->setOn(true); |
382 | if(promptExit) nAdvanced->setOn( true ); | 382 | if(promptExit) nAdvanced->setOn( true ); |
383 | if(openDesktop) desktopAction->setOn( true ); | 383 | if(openDesktop) desktopAction->setOn( true ); |
384 | if(filePerms) filePermAction->setOn( true ); | 384 | if(filePerms) filePermAction->setOn( true ); |
385 | if(startWithNew) nStart->setOn( true ); | 385 | if(startWithNew) nStart->setOn( true ); |
386 | if(featureAutoSave) nAutoSave->setOn(true); | 386 | if(featureAutoSave) nAutoSave->setOn(true); |
387 | 387 | ||
388 | // { | 388 | // { |
389 | // doTimer(true); | 389 | // doTimer(true); |
390 | // } | 390 | // } |
391 | 391 | ||
392 | bool wrap = cfg. readBoolEntry ( "Wrap", true ); | 392 | bool wrap = cfg. readBoolEntry ( "Wrap", true ); |
393 | wa-> setOn ( wrap ); | 393 | wa-> setOn ( wrap ); |
394 | setWordWrap ( wrap ); | 394 | setWordWrap ( wrap ); |
395 | 395 | ||
396 | ///////////////// | 396 | ///////////////// |
397 | if( qApp->argc() > 1) { | 397 | if( qApp->argc() > 1) { |
398 | currentFileName=qApp->argv()[1]; | 398 | currentFileName=qApp->argv()[1]; |
399 | 399 | ||
400 | QFileInfo fi(currentFileName); | 400 | QFileInfo fi(currentFileName); |
401 | 401 | ||
402 | if(fi.baseName().left(1) == "") { | 402 | if(fi.baseName().left(1) == "") { |
403 | openDotFile(currentFileName); | 403 | openDotFile(currentFileName); |
404 | } else { | 404 | } else { |
405 | openFile(currentFileName); | 405 | openFile(currentFileName); |
406 | } | 406 | } |
407 | } else { | 407 | } else { |
408 | edited1=false; | 408 | edited1=false; |
409 | openDotFile(""); | 409 | openDotFile(""); |
410 | } | 410 | } |
411 | 411 | ||
412 | viewSelection = cfg.readNumEntry( "FileView", 0 ); | 412 | viewSelection = cfg.readNumEntry( "FileView", 0 ); |
413 | } | 413 | } |
414 | 414 | ||
415 | TextEdit::~TextEdit() { | 415 | TextEdit::~TextEdit() { |
416 | qWarning("textedit d'tor"); | 416 | qWarning("textedit d'tor"); |
417 | delete editor; | 417 | delete editor; |
418 | } | 418 | } |
419 | 419 | ||
420 | void TextEdit::closeEvent(QCloseEvent *) { | 420 | void TextEdit::closeEvent(QCloseEvent *) { |
421 | if( edited1 && promptExit) | 421 | if( edited1 && promptExit) |
422 | { | 422 | { |
423 | switch( savePrompt() ) | 423 | switch( savePrompt() ) |
424 | { | 424 | { |
@@ -490,194 +490,194 @@ void TextEdit::setFontSize(int sz, bool round_down_not_up) { | |||
490 | break; | 490 | break; |
491 | } else if ( round_down_not_up ) { | 491 | } else if ( round_down_not_up ) { |
492 | if ( fontsize[i] < sz ) | 492 | if ( fontsize[i] < sz ) |
493 | s = fontsize[i]; | 493 | s = fontsize[i]; |
494 | } else { | 494 | } else { |
495 | if ( fontsize[i] > sz ) { | 495 | if ( fontsize[i] > sz ) { |
496 | s = fontsize[i]; | 496 | s = fontsize[i]; |
497 | break; | 497 | break; |
498 | } | 498 | } |
499 | } | 499 | } |
500 | } | 500 | } |
501 | 501 | ||
502 | QFont f = editor->font(); | 502 | QFont f = editor->font(); |
503 | f.setPointSize(s); | 503 | f.setPointSize(s); |
504 | editor->setFont(f); | 504 | editor->setFont(f); |
505 | 505 | ||
506 | zin->setEnabled(s != fontsize[nfontsizes-1]); | 506 | zin->setEnabled(s != fontsize[nfontsizes-1]); |
507 | zout->setEnabled(s != fontsize[0]); | 507 | zout->setEnabled(s != fontsize[0]); |
508 | } | 508 | } |
509 | 509 | ||
510 | void TextEdit::setBold(bool y) { | 510 | void TextEdit::setBold(bool y) { |
511 | QFont f = editor->font(); | 511 | QFont f = editor->font(); |
512 | f.setBold(y); | 512 | f.setBold(y); |
513 | editor->setFont(f); | 513 | editor->setFont(f); |
514 | } | 514 | } |
515 | 515 | ||
516 | void TextEdit::setItalic(bool y) { | 516 | void TextEdit::setItalic(bool y) { |
517 | QFont f = editor->font(); | 517 | QFont f = editor->font(); |
518 | f.setItalic(y); | 518 | f.setItalic(y); |
519 | editor->setFont(f); | 519 | editor->setFont(f); |
520 | } | 520 | } |
521 | 521 | ||
522 | void TextEdit::setWordWrap(bool y) { | 522 | void TextEdit::setWordWrap(bool y) { |
523 | bool state = editor->edited(); | 523 | bool state = editor->edited(); |
524 | QString captionStr = caption(); | 524 | QString captionStr = caption(); |
525 | bool b1 = edited1; | 525 | bool b1 = edited1; |
526 | bool b2 = edited; | 526 | bool b2 = edited; |
527 | 527 | ||
528 | editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap ); | 528 | editor->setWordWrap(y ? QMultiLineEdit::WidgetWidth : QMultiLineEdit::NoWrap ); |
529 | editor->setEdited( state ); | 529 | editor->setEdited( state ); |
530 | edited1=b1; | 530 | edited1=b1; |
531 | edited=b2; | 531 | edited=b2; |
532 | setCaption(captionStr); | 532 | setCaption(captionStr); |
533 | } | 533 | } |
534 | 534 | ||
535 | void TextEdit::setSearchBar(bool b) { | 535 | void TextEdit::setSearchBar(bool b) { |
536 | useSearchBar=b; | 536 | useSearchBar=b; |
537 | Config cfg("TextEdit"); | 537 | Config cfg("TextEdit"); |
538 | cfg.setGroup("View"); | 538 | cfg.setGroup("View"); |
539 | cfg.writeEntry ( "SearchBar", b ); | 539 | cfg.writeEntry ( "SearchBar", b ); |
540 | searchBarAction->setOn(b); | 540 | searchBarAction->setOn(b); |
541 | if(b) | 541 | if(b) |
542 | searchBar->show(); | 542 | searchBar->show(); |
543 | else | 543 | else |
544 | searchBar->hide(); | 544 | searchBar->hide(); |
545 | editor->setFocus(); | 545 | editor->setFocus(); |
546 | } | 546 | } |
547 | 547 | ||
548 | void TextEdit::fileNew() { | 548 | void TextEdit::fileNew() { |
549 | // if( !bFromDocView ) { | 549 | // if( !bFromDocView ) { |
550 | // saveAs(); | 550 | // saveAs(); |
551 | // } | 551 | // } |
552 | newFile(DocLnk()); | 552 | newFile(DocLnk()); |
553 | } | 553 | } |
554 | 554 | ||
555 | void TextEdit::fileOpen() { | 555 | void TextEdit::fileOpen() { |
556 | Config cfg("TextEdit"); | 556 | Config cfg("TextEdit"); |
557 | cfg. setGroup ( "View" ); | 557 | cfg. setGroup ( "View" ); |
558 | QMap<QString, QStringList> map; | 558 | QMap<QString, QStringList> map; |
559 | map.insert(tr("All"), QStringList() ); | 559 | map.insert(tr("All"), QStringList() ); |
560 | QStringList text; | 560 | QStringList text; |
561 | text << "text/*"; | 561 | text << "text/*"; |
562 | map.insert(tr("Text"), text ); | 562 | map.insert(tr("Text"), text ); |
563 | text << "*"; | 563 | text << "*"; |
564 | map.insert(tr("All"), text ); | 564 | map.insert(tr("All"), text ); |
565 | QString str = OFileDialog::getOpenFileName( 2, | 565 | QString str = OFileDialog::getOpenFileName( 2, |
566 | QString::null , | 566 | QString::null , |
567 | QString::null, map); | 567 | QString::null, map); |
568 | if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() ) | 568 | if( !str.isEmpty() && QFile(str).exists() && !QFileInfo(str).isDir() ) |
569 | { | 569 | { |
570 | openFile( str ); | 570 | openFile( str ); |
571 | } | 571 | } |
572 | else | 572 | else |
573 | updateCaption(); | 573 | updateCaption(); |
574 | } | 574 | } |
575 | 575 | ||
576 | void TextEdit::doSearchBar() { | 576 | void TextEdit::doSearchBar() { |
577 | if(!useSearchBar) | 577 | if(!useSearchBar) |
578 | searchBar->hide(); | 578 | searchBar->hide(); |
579 | else | 579 | else |
580 | searchBar->show(); | 580 | searchBar->show(); |
581 | } | 581 | } |
582 | 582 | ||
583 | #if 0 | 583 | #if 0 |
584 | void TextEdit::slotFind() { | 584 | void TextEdit::slotFind() { |
585 | FindDialog frmFind( tr("Text Editor"), this ); | 585 | FindDialog frmFind( tr("Text Editor"), this ); |
586 | connect( &frmFind, SIGNAL(signalFindClicked(const QString &, bool, bool, int)), | 586 | connect( &frmFind, SIGNAL(signalFindClicked(const QString&,bool,bool,int)), |
587 | editor, SLOT(slotDoFind( const QString&,bool,bool))); | 587 | editor, SLOT(slotDoFind(const QString&,bool,bool))); |
588 | 588 | ||
589 | //case sensitive, backwards, [category] | 589 | //case sensitive, backwards, [category] |
590 | 590 | ||
591 | connect( editor, SIGNAL(notFound()), | 591 | connect( editor, SIGNAL(notFound()), |
592 | &frmFind, SLOT(slotNotFound()) ); | 592 | &frmFind, SLOT(slotNotFound()) ); |
593 | connect( editor, SIGNAL(searchWrapped()), | 593 | connect( editor, SIGNAL(searchWrapped()), |
594 | &frmFind, SLOT(slotWrapAround()) ); | 594 | &frmFind, SLOT(slotWrapAround()) ); |
595 | 595 | ||
596 | frmFind.exec(); | 596 | frmFind.exec(); |
597 | 597 | ||
598 | 598 | ||
599 | } | 599 | } |
600 | #endif | 600 | #endif |
601 | 601 | ||
602 | void TextEdit::fileRevert() { | 602 | void TextEdit::fileRevert() { |
603 | clear(); | 603 | clear(); |
604 | fileOpen(); | 604 | fileOpen(); |
605 | } | 605 | } |
606 | 606 | ||
607 | void TextEdit::editCut() { | 607 | void TextEdit::editCut() { |
608 | #ifndef QT_NO_CLIPBOARD | 608 | #ifndef QT_NO_CLIPBOARD |
609 | editor->cut(); | 609 | editor->cut(); |
610 | #endif | 610 | #endif |
611 | } | 611 | } |
612 | 612 | ||
613 | void TextEdit::editCopy() { | 613 | void TextEdit::editCopy() { |
614 | #ifndef QT_NO_CLIPBOARD | 614 | #ifndef QT_NO_CLIPBOARD |
615 | editor->copy(); | 615 | editor->copy(); |
616 | #endif | 616 | #endif |
617 | } | 617 | } |
618 | 618 | ||
619 | void TextEdit::editPaste() { | 619 | void TextEdit::editPaste() { |
620 | #ifndef QT_NO_CLIPBOARD | 620 | #ifndef QT_NO_CLIPBOARD |
621 | editor->paste(); | 621 | editor->paste(); |
622 | #endif | 622 | #endif |
623 | } | 623 | } |
624 | 624 | ||
625 | void TextEdit::editFind() { | 625 | void TextEdit::editFind() { |
626 | searchBar->show(); | 626 | searchBar->show(); |
627 | searchEdit->setFocus(); | 627 | searchEdit->setFocus(); |
628 | } | 628 | } |
629 | 629 | ||
630 | void TextEdit::findNext() { | 630 | void TextEdit::findNext() { |
631 | editor->find( searchEdit->text(), false, false ); | 631 | editor->find( searchEdit->text(), false, false ); |
632 | 632 | ||
633 | } | 633 | } |
634 | 634 | ||
635 | void TextEdit::findClose() { | 635 | void TextEdit::findClose() { |
636 | searchBar->hide(); | 636 | searchBar->hide(); |
637 | } | 637 | } |
638 | 638 | ||
639 | void TextEdit::search() { | 639 | void TextEdit::search() { |
640 | editor->find( searchEdit->text(), false, false ); | 640 | editor->find( searchEdit->text(), false, false ); |
641 | } | 641 | } |
642 | 642 | ||
643 | void TextEdit::newFile( const DocLnk &f ) { | 643 | void TextEdit::newFile( const DocLnk &f ) { |
644 | DocLnk nf = f; | 644 | DocLnk nf = f; |
645 | nf.setType("text/plain"); | 645 | nf.setType("text/plain"); |
646 | clear(); | 646 | clear(); |
647 | setWState (WState_Reserved1 ); | 647 | setWState (WState_Reserved1 ); |
648 | editor->setFocus(); | 648 | editor->setFocus(); |
649 | doc = new DocLnk(nf); | 649 | doc = new DocLnk(nf); |
650 | currentFileName = "Unnamed"; | 650 | currentFileName = "Unnamed"; |
651 | qDebug("newFile "+currentFileName); | 651 | qDebug("newFile "+currentFileName); |
652 | updateCaption( currentFileName); | 652 | updateCaption( currentFileName); |
653 | // editor->setEdited( false); | 653 | // editor->setEdited( false); |
654 | } | 654 | } |
655 | 655 | ||
656 | void TextEdit::openDotFile( const QString &f ) { | 656 | void TextEdit::openDotFile( const QString &f ) { |
657 | if(!currentFileName.isEmpty()) { | 657 | if(!currentFileName.isEmpty()) { |
658 | currentFileName=f; | 658 | currentFileName=f; |
659 | 659 | ||
660 | qDebug("openFile dotfile " + currentFileName); | 660 | qDebug("openFile dotfile " + currentFileName); |
661 | QString txt; | 661 | QString txt; |
662 | QFile file(f); | 662 | QFile file(f); |
663 | file.open(IO_ReadWrite); | 663 | file.open(IO_ReadWrite); |
664 | QTextStream t(&file); | 664 | QTextStream t(&file); |
665 | while ( !t.atEnd()) { | 665 | while ( !t.atEnd()) { |
666 | txt+=t.readLine()+"\n"; | 666 | txt+=t.readLine()+"\n"; |
667 | } | 667 | } |
668 | editor->setText(txt); | 668 | editor->setText(txt); |
669 | editor->setEdited( false); | 669 | editor->setEdited( false); |
670 | edited1=false; | 670 | edited1=false; |
671 | edited=false; | 671 | edited=false; |
672 | 672 | ||
673 | 673 | ||
674 | } | 674 | } |
675 | updateCaption( currentFileName); | 675 | updateCaption( currentFileName); |
676 | } | 676 | } |
677 | 677 | ||
678 | void TextEdit::openFile( const QString &f ) { | 678 | void TextEdit::openFile( const QString &f ) { |
679 | qDebug("filename is "+ f); | 679 | qDebug("filename is "+ f); |
680 | QString filer; | 680 | QString filer; |
681 | QFileInfo fi( f); | 681 | QFileInfo fi( f); |
682 | // bFromDocView = true; | 682 | // bFromDocView = true; |
683 | if(f.find(".desktop",0,true) != -1 && !openDesktop ) | 683 | if(f.find(".desktop",0,true) != -1 && !openDesktop ) |
diff --git a/core/launcher/appicons.cpp b/core/launcher/appicons.cpp index c51ee5a..4d48b24 100644 --- a/core/launcher/appicons.cpp +++ b/core/launcher/appicons.cpp | |||
@@ -1,129 +1,131 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | 21 | ||
22 | #include "appicons.h" | 22 | #include "appicons.h" |
23 | 23 | ||
24 | #include <qpe/qcopenvelope_qws.h> | 24 | #ifdef QWS |
25 | #include <qtopia/qcopenvelope_qws.h> | ||
26 | #endif | ||
25 | 27 | ||
26 | #include <qtooltip.h> | 28 | #include <qtooltip.h> |
27 | #include <qpixmap.h> | 29 | #include <qpixmap.h> |
28 | 30 | ||
29 | 31 | ||
30 | AppIcons::AppIcons( QWidget *parent ) : | 32 | AppIcons::AppIcons( QWidget *parent ) : |
31 | QHBox(parent) | 33 | QHBox(parent) |
32 | { | 34 | { |
33 | buttons.setAutoDelete(TRUE); | 35 | buttons.setAutoDelete(TRUE); |
34 | 36 | ||
35 | #ifndef QT_NO_COP | 37 | #ifndef QT_NO_COP |
36 | QCopChannel* channel = new QCopChannel("Qt/Tray", this); | 38 | QCopChannel* channel = new QCopChannel("Qt/Tray", this); |
37 | connect(channel, SIGNAL(received(const QCString&, const QByteArray&)), | 39 | connect(channel, SIGNAL(received(const QCString&,const QByteArray&)), |
38 | this, SLOT(receive(const QCString&, const QByteArray&))); | 40 | this, SLOT(receive(const QCString&,const QByteArray&))); |
39 | #endif | 41 | #endif |
40 | } | 42 | } |
41 | 43 | ||
42 | void AppIcons::setIcon(int id, const QPixmap& pm) | 44 | void AppIcons::setIcon(int id, const QPixmap& pm) |
43 | { | 45 | { |
44 | button(id)->setPixmap(pm); | 46 | button(id)->setPixmap(pm); |
45 | } | 47 | } |
46 | 48 | ||
47 | class FlatButton : public QLabel { | 49 | class FlatButton : public QLabel { |
48 | Q_OBJECT | 50 | Q_OBJECT |
49 | public: | 51 | public: |
50 | FlatButton(QWidget* parent) : QLabel(parent) { } | 52 | FlatButton(QWidget* parent) : QLabel(parent) { } |
51 | 53 | ||
52 | void mouseDoubleClickEvent(QMouseEvent* e) | 54 | void mouseDoubleClickEvent(QMouseEvent* e) |
53 | { | 55 | { |
54 | emit clicked(e->pos(),e->button(),TRUE); | 56 | emit clicked(e->pos(),e->button(),TRUE); |
55 | } | 57 | } |
56 | void mouseReleaseEvent(QMouseEvent* e) | 58 | void mouseReleaseEvent(QMouseEvent* e) |
57 | { | 59 | { |
58 | if ( rect().contains(e->pos()) ) | 60 | if ( rect().contains(e->pos()) ) |
59 | emit clicked(e->pos(),e->button(),FALSE); | 61 | emit clicked(e->pos(),e->button(),FALSE); |
60 | } | 62 | } |
61 | 63 | ||
62 | signals: | 64 | signals: |
63 | void clicked(const QPoint&, int, bool); | 65 | void clicked(const QPoint&, int, bool); |
64 | }; | 66 | }; |
65 | 67 | ||
66 | QLabel* AppIcons::button(int id) | 68 | QLabel* AppIcons::button(int id) |
67 | { | 69 | { |
68 | QLabel* f = buttons.find(id); | 70 | QLabel* f = buttons.find(id); |
69 | if ( !f ) { | 71 | if ( !f ) { |
70 | buttons.insert(id,f=new FlatButton(this)); | 72 | buttons.insert(id,f=new FlatButton(this)); |
71 | connect(f,SIGNAL(clicked(const QPoint&, int, bool)),this,SLOT(clicked(const QPoint&, int, bool))); | 73 | connect(f,SIGNAL(clicked(const QPoint&,int,bool)),this,SLOT(clicked(const QPoint&,int,bool))); |
72 | f->show(); | 74 | f->show(); |
73 | } | 75 | } |
74 | return f; | 76 | return f; |
75 | } | 77 | } |
76 | 78 | ||
77 | int AppIcons::findId(QLabel* b) | 79 | int AppIcons::findId(QLabel* b) |
78 | { | 80 | { |
79 | QIntDictIterator<QLabel> it(buttons); | 81 | QIntDictIterator<QLabel> it(buttons); |
80 | for ( ; ; ++it ) | 82 | for ( ; ; ++it ) |
81 | if ( it.current() == b ) return it.currentKey(); | 83 | if ( it.current() == b ) return it.currentKey(); |
82 | } | 84 | } |
83 | 85 | ||
84 | void AppIcons::clicked(const QPoint& relpos, int button, bool dbl) | 86 | void AppIcons::clicked(const QPoint& relpos, int button, bool dbl) |
85 | { | 87 | { |
86 | #ifndef QT_NO_COP | 88 | #ifndef QT_NO_COP |
87 | QLabel* s = (QLabel*)sender(); | 89 | QLabel* s = (QLabel*)sender(); |
88 | if ( button == RightButton ) { | 90 | if ( button == RightButton ) { |
89 | QCopEnvelope("Qt/Tray","popup(int,QPoint)") | 91 | QCopEnvelope("Qt/Tray","popup(int,QPoint)") |
90 | << findId(s) << s->mapToGlobal(QPoint(0,0)); | 92 | << findId(s) << s->mapToGlobal(QPoint(0,0)); |
91 | } else { | 93 | } else { |
92 | QCopEnvelope("Qt/Tray", | 94 | QCopEnvelope("Qt/Tray", |
93 | dbl ? "doubleClicked(int,QPoint)" : "clicked(int,QPoint)") | 95 | dbl ? "doubleClicked(int,QPoint)" : "clicked(int,QPoint)") |
94 | << findId(s) << relpos; | 96 | << findId(s) << relpos; |
95 | } | 97 | } |
96 | #endif | 98 | #endif |
97 | } | 99 | } |
98 | 100 | ||
99 | void AppIcons::setToolTip(int id, const QString& tip) | 101 | void AppIcons::setToolTip(int id, const QString& tip) |
100 | { | 102 | { |
101 | QToolTip::add(button(id),tip); | 103 | QToolTip::add(button(id),tip); |
102 | } | 104 | } |
103 | 105 | ||
104 | void AppIcons::remove(int id) | 106 | void AppIcons::remove(int id) |
105 | { | 107 | { |
106 | buttons.remove(id); | 108 | buttons.remove(id); |
107 | } | 109 | } |
108 | 110 | ||
109 | void AppIcons::receive( const QCString &msg, const QByteArray &data ) | 111 | void AppIcons::receive( const QCString &msg, const QByteArray &data ) |
110 | { | 112 | { |
111 | QDataStream stream( data, IO_ReadOnly ); | 113 | QDataStream stream( data, IO_ReadOnly ); |
112 | if ( msg == "remove(int)" ) { | 114 | if ( msg == "remove(int)" ) { |
113 | int id; | 115 | int id; |
114 | stream >> id; | 116 | stream >> id; |
115 | remove(id); | 117 | remove(id); |
116 | } else if ( msg == "setIcon(int,QPixmap)" ) { | 118 | } else if ( msg == "setIcon(int,QPixmap)" ) { |
117 | int id; | 119 | int id; |
118 | QPixmap pm; | 120 | QPixmap pm; |
119 | stream >> id >> pm; | 121 | stream >> id >> pm; |
120 | setIcon(id,pm); | 122 | setIcon(id,pm); |
121 | } else if ( msg == "setToolTip(int,QString)" ) { | 123 | } else if ( msg == "setToolTip(int,QString)" ) { |
122 | int id; | 124 | int id; |
123 | QString s; | 125 | QString s; |
124 | stream >> id >> s; | 126 | stream >> id >> s; |
125 | setToolTip(id,s); | 127 | setToolTip(id,s); |
126 | } | 128 | } |
127 | } | 129 | } |
128 | 130 | ||
129 | #include "appicons.moc" | 131 | #include "appicons.moc" |
diff --git a/core/launcher/applauncher.cpp b/core/launcher/applauncher.cpp index 7d3c032..08a3cb4 100644 --- a/core/launcher/applauncher.cpp +++ b/core/launcher/applauncher.cpp | |||
@@ -1,190 +1,190 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #ifndef QTOPIA_INTERNAL_PRELOADACCESS | 21 | #ifndef QTOPIA_INTERNAL_PRELOADACCESS |
22 | #define QTOPIA_INTERNAL_PRELOADACCESS | 22 | #define QTOPIA_INTERNAL_PRELOADACCESS |
23 | #endif | 23 | #endif |
24 | #ifndef QTOPIA_INTERNAL_FILEOPERATIONS | 24 | #ifndef QTOPIA_INTERNAL_FILEOPERATIONS |
25 | #define QTOPIA_INTERNAL_FILEOPERATIONS | 25 | #define QTOPIA_INTERNAL_FILEOPERATIONS |
26 | #endif | 26 | #endif |
27 | #ifndef QTOPIA_PROGRAM_MONITOR | 27 | #ifndef QTOPIA_PROGRAM_MONITOR |
28 | #define QTOPIA_PROGRAM_MONITOR | 28 | #define QTOPIA_PROGRAM_MONITOR |
29 | #endif | 29 | #endif |
30 | #include <opie2/oglobal.h> | 30 | #include <opie2/oglobal.h> |
31 | 31 | ||
32 | #ifndef Q_OS_WIN32 | 32 | #ifndef Q_OS_WIN32 |
33 | #include <sys/stat.h> | 33 | #include <sys/stat.h> |
34 | #include <sys/wait.h> | 34 | #include <sys/wait.h> |
35 | #include <sys/file.h> | 35 | #include <sys/file.h> |
36 | #include <unistd.h> | 36 | #include <unistd.h> |
37 | #include <sys/time.h> | 37 | #include <sys/time.h> |
38 | #include <sys/resource.h> | 38 | #include <sys/resource.h> |
39 | #include <errno.h> | 39 | #include <errno.h> |
40 | #else | 40 | #else |
41 | #include <process.h> | 41 | #include <process.h> |
42 | #include <windows.h> | 42 | #include <windows.h> |
43 | #include <winbase.h> | 43 | #include <winbase.h> |
44 | #endif | 44 | #endif |
45 | 45 | ||
46 | #include <signal.h> | 46 | #include <signal.h> |
47 | #include <sys/types.h> | 47 | #include <sys/types.h> |
48 | #include <stdlib.h> | 48 | #include <stdlib.h> |
49 | 49 | ||
50 | #include <qtimer.h> | 50 | #include <qtimer.h> |
51 | #include <qwindowsystem_qws.h> | 51 | #include <qwindowsystem_qws.h> |
52 | #include <qmessagebox.h> | 52 | #include <qmessagebox.h> |
53 | #include <qfileinfo.h> | 53 | #include <qfileinfo.h> |
54 | 54 | ||
55 | #include <qtopia/qcopenvelope_qws.h> | 55 | #include <qtopia/qcopenvelope_qws.h> |
56 | #include <qtopia/qpeapplication.h> | 56 | #include <qtopia/qpeapplication.h> |
57 | 57 | ||
58 | #include "applauncher.h" | 58 | #include "applauncher.h" |
59 | #include "documentlist.h" | 59 | #include "documentlist.h" |
60 | 60 | ||
61 | const int AppLauncher::RAISE_TIMEOUT_MS = 5000; | 61 | const int AppLauncher::RAISE_TIMEOUT_MS = 5000; |
62 | 62 | ||
63 | //--------------------------------------------------------------------------- | 63 | //--------------------------------------------------------------------------- |
64 | 64 | ||
65 | static AppLauncher* appLauncherPtr; | 65 | static AppLauncher* appLauncherPtr; |
66 | 66 | ||
67 | const int appStopEventID = 1290; | 67 | const int appStopEventID = 1290; |
68 | 68 | ||
69 | class AppStoppedEvent : public QCustomEvent | 69 | class AppStoppedEvent : public QCustomEvent |
70 | { | 70 | { |
71 | public: | 71 | public: |
72 | AppStoppedEvent(int pid, int status) | 72 | AppStoppedEvent(int pid, int status) |
73 | : QCustomEvent( appStopEventID ), mPid(pid), mStatus(status) { } | 73 | : QCustomEvent( appStopEventID ), mPid(pid), mStatus(status) { } |
74 | 74 | ||
75 | int pid() { return mPid; } | 75 | int pid() { return mPid; } |
76 | int status() { return mStatus; } | 76 | int status() { return mStatus; } |
77 | 77 | ||
78 | private: | 78 | private: |
79 | int mPid, mStatus; | 79 | int mPid, mStatus; |
80 | }; | 80 | }; |
81 | 81 | ||
82 | AppLauncher::AppLauncher(QObject *parent, const char *name) | 82 | AppLauncher::AppLauncher(QObject *parent, const char *name) |
83 | : QObject(parent, name), qlPid(0), qlReady(FALSE), | 83 | : QObject(parent, name), qlPid(0), qlReady(FALSE), |
84 | appKillerBox(0) | 84 | appKillerBox(0) |
85 | { | 85 | { |
86 | connect(qwsServer, SIGNAL(newChannel(const QString&)), this, SLOT(newQcopChannel(const QString&))); | 86 | connect(qwsServer, SIGNAL(newChannel(const QString&)), this, SLOT(newQcopChannel(const QString&))); |
87 | connect(qwsServer, SIGNAL(removedChannel(const QString&)), this, SLOT(removedQcopChannel(const QString&))); | 87 | connect(qwsServer, SIGNAL(removedChannel(const QString&)), this, SLOT(removedQcopChannel(const QString&))); |
88 | QCopChannel* channel = new QCopChannel( "QPE/System", this ); | 88 | QCopChannel* channel = new QCopChannel( "QPE/System", this ); |
89 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), | 89 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
90 | this, SLOT(received(const QCString&, const QByteArray&)) ); | 90 | this, SLOT(received(const QCString&,const QByteArray&)) ); |
91 | 91 | ||
92 | channel = new QCopChannel( "QPE/Server", this ); | 92 | channel = new QCopChannel( "QPE/Server", this ); |
93 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), | 93 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
94 | this, SLOT(received(const QCString&, const QByteArray&)) ); | 94 | this, SLOT(received(const QCString&,const QByteArray&)) ); |
95 | 95 | ||
96 | #ifndef Q_OS_WIN32 | 96 | #ifndef Q_OS_WIN32 |
97 | signal(SIGCHLD, signalHandler); | 97 | signal(SIGCHLD, signalHandler); |
98 | #else | 98 | #else |
99 | runningAppsProc.setAutoDelete( TRUE ); | 99 | runningAppsProc.setAutoDelete( TRUE ); |
100 | #endif | 100 | #endif |
101 | QString tmp = qApp->argv()[0]; | 101 | QString tmp = qApp->argv()[0]; |
102 | int pos = tmp.findRev('/'); | 102 | int pos = tmp.findRev('/'); |
103 | if ( pos > -1 ) | 103 | if ( pos > -1 ) |
104 | tmp = tmp.mid(++pos); | 104 | tmp = tmp.mid(++pos); |
105 | runningApps[::getpid()] = tmp; | 105 | runningApps[::getpid()] = tmp; |
106 | 106 | ||
107 | appLauncherPtr = this; | 107 | appLauncherPtr = this; |
108 | 108 | ||
109 | QTimer::singleShot( 1000, this, SLOT(createQuickLauncher()) ); | 109 | QTimer::singleShot( 1000, this, SLOT(createQuickLauncher()) ); |
110 | } | 110 | } |
111 | 111 | ||
112 | AppLauncher::~AppLauncher() | 112 | AppLauncher::~AppLauncher() |
113 | { | 113 | { |
114 | appLauncherPtr = 0; | 114 | appLauncherPtr = 0; |
115 | #ifndef Q_OS_WIN32 | 115 | #ifndef Q_OS_WIN32 |
116 | signal(SIGCHLD, SIG_DFL); | 116 | signal(SIGCHLD, SIG_DFL); |
117 | #endif | 117 | #endif |
118 | if ( qlPid ) { | 118 | if ( qlPid ) { |
119 | int status; | 119 | int status; |
120 | ::kill( qlPid, SIGTERM ); | 120 | ::kill( qlPid, SIGTERM ); |
121 | waitpid( qlPid, &status, 0 ); | 121 | waitpid( qlPid, &status, 0 ); |
122 | } | 122 | } |
123 | } | 123 | } |
124 | 124 | ||
125 | /* We use the QCopChannel of the app as an indicator of when it has been launched | 125 | /* We use the QCopChannel of the app as an indicator of when it has been launched |
126 | so that we can disable the busy indicators */ | 126 | so that we can disable the busy indicators */ |
127 | void AppLauncher::newQcopChannel(const QString& channelName) | 127 | void AppLauncher::newQcopChannel(const QString& channelName) |
128 | { | 128 | { |
129 | // qDebug("channel %s added", channelName.data() ); | 129 | // qDebug("channel %s added", channelName.data() ); |
130 | QString prefix("QPE/Application/"); | 130 | QString prefix("QPE/Application/"); |
131 | if (channelName.startsWith(prefix)) { | 131 | if (channelName.startsWith(prefix)) { |
132 | { | 132 | { |
133 | QCopEnvelope e("QPE/System", "newChannel(QString)"); | 133 | QCopEnvelope e("QPE/System", "newChannel(QString)"); |
134 | e << channelName; | 134 | e << channelName; |
135 | } | 135 | } |
136 | QString appName = channelName.mid(prefix.length()); | 136 | QString appName = channelName.mid(prefix.length()); |
137 | if ( appName != "quicklauncher" ) { | 137 | if ( appName != "quicklauncher" ) { |
138 | emit connected( appName ); | 138 | emit connected( appName ); |
139 | QCopEnvelope e("QPE/System", "notBusy(QString)"); | 139 | QCopEnvelope e("QPE/System", "notBusy(QString)"); |
140 | e << appName; | 140 | e << appName; |
141 | } | 141 | } |
142 | } else if (channelName.startsWith("QPE/QuickLauncher-")) { | 142 | } else if (channelName.startsWith("QPE/QuickLauncher-")) { |
143 | qDebug("Registered %s", channelName.latin1()); | 143 | qDebug("Registered %s", channelName.latin1()); |
144 | int pid = channelName.mid(18).toInt(); | 144 | int pid = channelName.mid(18).toInt(); |
145 | if (pid == qlPid) | 145 | if (pid == qlPid) |
146 | qlReady = TRUE; | 146 | qlReady = TRUE; |
147 | } | 147 | } |
148 | } | 148 | } |
149 | 149 | ||
150 | void AppLauncher::removedQcopChannel(const QString& channelName) | 150 | void AppLauncher::removedQcopChannel(const QString& channelName) |
151 | { | 151 | { |
152 | if (channelName.startsWith("QPE/Application/")) { | 152 | if (channelName.startsWith("QPE/Application/")) { |
153 | QCopEnvelope e("QPE/System", "removedChannel(QString)"); | 153 | QCopEnvelope e("QPE/System", "removedChannel(QString)"); |
154 | e << channelName; | 154 | e << channelName; |
155 | } | 155 | } |
156 | } | 156 | } |
157 | 157 | ||
158 | void AppLauncher::received(const QCString& msg, const QByteArray& data) | 158 | void AppLauncher::received(const QCString& msg, const QByteArray& data) |
159 | { | 159 | { |
160 | QDataStream stream( data, IO_ReadOnly ); | 160 | QDataStream stream( data, IO_ReadOnly ); |
161 | if ( msg == "execute(QString)" ) { | 161 | if ( msg == "execute(QString)" ) { |
162 | QString t; | 162 | QString t; |
163 | stream >> t; | 163 | stream >> t; |
164 | if ( !executeBuiltin( t, QString::null ) ) | 164 | if ( !executeBuiltin( t, QString::null ) ) |
165 | execute(t, QString::null); | 165 | execute(t, QString::null); |
166 | } else if ( msg == "execute(QString,QString)" ) { | 166 | } else if ( msg == "execute(QString,QString)" ) { |
167 | QString t,d; | 167 | QString t,d; |
168 | stream >> t >> d; | 168 | stream >> t >> d; |
169 | if ( !executeBuiltin( t, d ) ) | 169 | if ( !executeBuiltin( t, d ) ) |
170 | execute( t, d ); | 170 | execute( t, d ); |
171 | } else if ( msg == "processQCop(QString)" ) { // from QPE/Server | 171 | } else if ( msg == "processQCop(QString)" ) { // from QPE/Server |
172 | QString t; | 172 | QString t; |
173 | stream >> t; | 173 | stream >> t; |
174 | if ( !executeBuiltin( t, QString::null ) ) | 174 | if ( !executeBuiltin( t, QString::null ) ) |
175 | execute( t, QString::null, TRUE); | 175 | execute( t, QString::null, TRUE); |
176 | } else if ( msg == "raise(QString)" ) { | 176 | } else if ( msg == "raise(QString)" ) { |
177 | QString appName; | 177 | QString appName; |
178 | stream >> appName; | 178 | stream >> appName; |
179 | 179 | ||
180 | if ( !executeBuiltin( appName, QString::null ) ) { | 180 | if ( !executeBuiltin( appName, QString::null ) ) { |
181 | if ( !waitingHeartbeat.contains( appName ) && appKillerName != appName ) { | 181 | if ( !waitingHeartbeat.contains( appName ) && appKillerName != appName ) { |
182 | //qDebug( "Raising: %s", appName.latin1() ); | 182 | //qDebug( "Raising: %s", appName.latin1() ); |
183 | QCString channel = "QPE/Application/"; | 183 | QCString channel = "QPE/Application/"; |
184 | channel += appName.latin1(); | 184 | channel += appName.latin1(); |
185 | 185 | ||
186 | // Need to lock it to avoid race conditions with QPEApplication::processQCopFile | 186 | // Need to lock it to avoid race conditions with QPEApplication::processQCopFile |
187 | QFile f("/tmp/qcop-msg-" + appName); | 187 | QFile f("/tmp/qcop-msg-" + appName); |
188 | if ( f.open(IO_WriteOnly | IO_Append) ) { | 188 | if ( f.open(IO_WriteOnly | IO_Append) ) { |
189 | #ifndef Q_OS_WIN32 | 189 | #ifndef Q_OS_WIN32 |
190 | flock(f.handle(), LOCK_EX); | 190 | flock(f.handle(), LOCK_EX); |
diff --git a/core/launcher/firstuse.cpp b/core/launcher/firstuse.cpp index 50ae6c2..4316648 100644 --- a/core/launcher/firstuse.cpp +++ b/core/launcher/firstuse.cpp | |||
@@ -5,253 +5,253 @@ | |||
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | // I need access to some things you don't normally get access to. | 21 | // I need access to some things you don't normally get access to. |
22 | 22 | ||
23 | #ifndef _MSC_VER | 23 | #ifndef _MSC_VER |
24 | //### revise to allow removal of translators under MSVC | 24 | //### revise to allow removal of translators under MSVC |
25 | #define private public | 25 | #define private public |
26 | #define protected public | 26 | #define protected public |
27 | #endif | 27 | #endif |
28 | #include "firstuse.h" | 28 | #include "firstuse.h" |
29 | #include "inputmethods.h" | 29 | #include "inputmethods.h" |
30 | #include "applauncher.h" | 30 | #include "applauncher.h" |
31 | #include "serverapp.h" | 31 | #include "serverapp.h" |
32 | //#include <qtopia/custom.h> | 32 | //#include <qtopia/custom.h> |
33 | 33 | ||
34 | #include "calibrate.h" | 34 | #include "calibrate.h" |
35 | #include "documentlist.h" | 35 | #include "documentlist.h" |
36 | 36 | ||
37 | #include <qtopia/resource.h> | 37 | #include <qtopia/resource.h> |
38 | #include <qtopia/qcopenvelope_qws.h> | 38 | #include <qtopia/qcopenvelope_qws.h> |
39 | #include <qtopia/config.h> | 39 | #include <qtopia/config.h> |
40 | #include <qtopia/fontmanager.h> | 40 | #include <qtopia/fontmanager.h> |
41 | 41 | ||
42 | #include <qfile.h> | 42 | #include <qfile.h> |
43 | #include <qpainter.h> | 43 | #include <qpainter.h> |
44 | #include <qsimplerichtext.h> | 44 | #include <qsimplerichtext.h> |
45 | #include <qpushbutton.h> | 45 | #include <qpushbutton.h> |
46 | #include <qlabel.h> | 46 | #include <qlabel.h> |
47 | #include <qtimer.h> | 47 | #include <qtimer.h> |
48 | 48 | ||
49 | #if defined( Q_WS_QWS ) | 49 | #if defined( Q_WS_QWS ) |
50 | #include <qwsdisplay_qws.h> | 50 | #include <qwsdisplay_qws.h> |
51 | #include <qgfx_qws.h> | 51 | #include <qgfx_qws.h> |
52 | #endif | 52 | #endif |
53 | 53 | ||
54 | 54 | ||
55 | #include <stdlib.h> | 55 | #include <stdlib.h> |
56 | #include <sys/types.h> | 56 | #include <sys/types.h> |
57 | #if defined(Q_OS_LINUX) || defined(_OS_LINUX_) | 57 | #if defined(Q_OS_LINUX) || defined(_OS_LINUX_) |
58 | #include <unistd.h> | 58 | #include <unistd.h> |
59 | #endif | 59 | #endif |
60 | 60 | ||
61 | 61 | ||
62 | struct { | 62 | struct { |
63 | bool enabled; | 63 | bool enabled; |
64 | const char *app; | 64 | const char *app; |
65 | const char *start; | 65 | const char *start; |
66 | const char *stop; | 66 | const char *stop; |
67 | const char *desc; | 67 | const char *desc; |
68 | } | 68 | } |
69 | settingsTable [] = | 69 | settingsTable [] = |
70 | { | 70 | { |
71 | { FALSE, "language", "raise()", "accept()", // No tr | 71 | { FALSE, "language", "raise()", "accept()", // No tr |
72 | QT_TR_NOOP("Language") }, | 72 | QT_TR_NOOP("Language") }, |
73 | { FALSE, "doctab", "raise()", "accept()", // No tr | 73 | { FALSE, "doctab", "raise()", "accept()", // No tr |
74 | QT_TR_NOOP("DocTab") }, | 74 | QT_TR_NOOP("DocTab") }, |
75 | #ifndef Q_OS_WIN32 | 75 | #ifndef Q_OS_WIN32 |
76 | { FALSE, "systemtime", "raise()", "accept()", // No tr | 76 | { FALSE, "systemtime", "raise()", "accept()", // No tr |
77 | QT_TR_NOOP("Time and Date") }, | 77 | QT_TR_NOOP("Time and Date") }, |
78 | #endif | 78 | #endif |
79 | { FALSE, "addressbook", "editPersonalAndClose()", "accept()", // No tr | 79 | { FALSE, "addressbook", "editPersonalAndClose()", "accept()", // No tr |
80 | QT_TR_NOOP("Personal Information") }, | 80 | QT_TR_NOOP("Personal Information") }, |
81 | { FALSE, 0, 0, 0, 0 } | 81 | { FALSE, 0, 0, 0, 0 } |
82 | }; | 82 | }; |
83 | 83 | ||
84 | 84 | ||
85 | FirstUse::FirstUse(QWidget* parent, const char * name, WFlags wf) : | 85 | FirstUse::FirstUse(QWidget* parent, const char * name, WFlags wf) : |
86 | QDialog( parent, name, TRUE, wf), | 86 | QDialog( parent, name, TRUE, wf), |
87 | transApp(0), transLib(0), needCalibrate(FALSE), currApp(-1), | 87 | transApp(0), transLib(0), needCalibrate(FALSE), currApp(-1), |
88 | waitForExit(-1), waitingForLaunch(FALSE), needRestart(FALSE) | 88 | waitForExit(-1), waitingForLaunch(FALSE), needRestart(FALSE) |
89 | { | 89 | { |
90 | ServerApplication::allowRestart = FALSE; | 90 | ServerApplication::allowRestart = FALSE; |
91 | // we force our height beyound the maximum (which we set anyway) | 91 | // we force our height beyound the maximum (which we set anyway) |
92 | QRect desk = qApp->desktop()->geometry(); | 92 | QRect desk = qApp->desktop()->geometry(); |
93 | setGeometry( 0, 0, desk.width(), desk.height() ); | 93 | setGeometry( 0, 0, desk.width(), desk.height() ); |
94 | 94 | ||
95 | connect(qwsServer, SIGNAL(newChannel(const QString&)), | 95 | connect(qwsServer, SIGNAL(newChannel(const QString&)), |
96 | this, SLOT(newQcopChannel(const QString&))); | 96 | this, SLOT(newQcopChannel(const QString&))); |
97 | 97 | ||
98 | // Create a DocumentList so appLauncher has appLnkSet to search | 98 | // Create a DocumentList so appLauncher has appLnkSet to search |
99 | docList = new DocumentList( 0, FALSE ); | 99 | docList = new DocumentList( 0, FALSE ); |
100 | appLauncher = new AppLauncher( this ); | 100 | appLauncher = new AppLauncher( this ); |
101 | connect( appLauncher, SIGNAL(terminated(int, const QString&)), | 101 | connect( appLauncher, SIGNAL(terminated(int,const QString&)), |
102 | this, SLOT(terminated(int, const QString&)) ); | 102 | this, SLOT(terminated(int,const QString&)) ); |
103 | 103 | ||
104 | // more hackery | 104 | // more hackery |
105 | // I will be run as either the main server or as part of the main server | 105 | // I will be run as either the main server or as part of the main server |
106 | QWSServer::setScreenSaverIntervals(0); | 106 | QWSServer::setScreenSaverIntervals(0); |
107 | loadPixmaps(); | 107 | loadPixmaps(); |
108 | 108 | ||
109 | //check if there is a language program | 109 | //check if there is a language program |
110 | #ifndef Q_OS_WIN32 | 110 | #ifndef Q_OS_WIN32 |
111 | QString exeSuffix; | 111 | QString exeSuffix; |
112 | #else | 112 | #else |
113 | QString exeSuffix(".exe"); | 113 | QString exeSuffix(".exe"); |
114 | #endif | 114 | #endif |
115 | 115 | ||
116 | for ( int i = 0; settingsTable[i].app; i++ ) { | 116 | for ( int i = 0; settingsTable[i].app; i++ ) { |
117 | QString file = QPEApplication::qpeDir() + "bin/"; | 117 | QString file = QPEApplication::qpeDir() + "bin/"; |
118 | file += settingsTable[i].app; | 118 | file += settingsTable[i].app; |
119 | file += exeSuffix; | 119 | file += exeSuffix; |
120 | if ( QFile::exists(file) ) | 120 | if ( QFile::exists(file) ) |
121 | settingsTable[i].enabled = TRUE; | 121 | settingsTable[i].enabled = TRUE; |
122 | } | 122 | } |
123 | 123 | ||
124 | setFocusPolicy(NoFocus); | 124 | setFocusPolicy(NoFocus); |
125 | 125 | ||
126 | taskBar = new QWidget(0, 0, WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop | WGroupLeader); | 126 | taskBar = new QWidget(0, 0, WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop | WGroupLeader); |
127 | 127 | ||
128 | inputMethods = new InputMethods(taskBar); | 128 | inputMethods = new InputMethods(taskBar); |
129 | connect(inputMethods, SIGNAL(inputToggled(bool)), | 129 | connect(inputMethods, SIGNAL(inputToggled(bool)), |
130 | this, SLOT(calcMaxWindowRect())); | 130 | this, SLOT(calcMaxWindowRect())); |
131 | 131 | ||
132 | back = new QPushButton(tr("<< Back"), taskBar); | 132 | back = new QPushButton(tr("<< Back"), taskBar); |
133 | back->setFocusPolicy(NoFocus); | 133 | back->setFocusPolicy(NoFocus); |
134 | connect(back, SIGNAL(clicked()), this, SLOT(previousDialog()) ); | 134 | connect(back, SIGNAL(clicked()), this, SLOT(previousDialog()) ); |
135 | 135 | ||
136 | next = new QPushButton(tr("Next >>"), taskBar); | 136 | next = new QPushButton(tr("Next >>"), taskBar); |
137 | next->setFocusPolicy(NoFocus); | 137 | next->setFocusPolicy(NoFocus); |
138 | connect(next, SIGNAL(clicked()), this, SLOT(nextDialog()) ); | 138 | connect(next, SIGNAL(clicked()), this, SLOT(nextDialog()) ); |
139 | 139 | ||
140 | // need to set the geom to lower corner | 140 | // need to set the geom to lower corner |
141 | QSize sz = inputMethods->sizeHint(); | 141 | QSize sz = inputMethods->sizeHint(); |
142 | int buttonWidth = (width() - sz.width()) / 2; | 142 | int buttonWidth = (width() - sz.width()) / 2; |
143 | int x = 0; | 143 | int x = 0; |
144 | 144 | ||
145 | controlHeight = back->sizeHint().height(); | 145 | controlHeight = back->sizeHint().height(); |
146 | 146 | ||
147 | inputMethods->setGeometry(0,0, sz.width(), controlHeight ); | 147 | inputMethods->setGeometry(0,0, sz.width(), controlHeight ); |
148 | x += sz.width(); | 148 | x += sz.width(); |
149 | 149 | ||
150 | back->setGeometry(x, 0, buttonWidth, controlHeight); | 150 | back->setGeometry(x, 0, buttonWidth, controlHeight); |
151 | x += buttonWidth; | 151 | x += buttonWidth; |
152 | next->setGeometry(x, 0, buttonWidth, controlHeight); | 152 | next->setGeometry(x, 0, buttonWidth, controlHeight); |
153 | 153 | ||
154 | taskBar->setGeometry( 0, height() - controlHeight, desk.width(), controlHeight); | 154 | taskBar->setGeometry( 0, height() - controlHeight, desk.width(), controlHeight); |
155 | taskBar->hide(); | 155 | taskBar->hide(); |
156 | 156 | ||
157 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 157 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
158 | qDebug("Setting up QCop to QPE/System"); | 158 | qDebug("Setting up QCop to QPE/System"); |
159 | QCopChannel* sysChannel = new QCopChannel( "QPE/System", this ); | 159 | QCopChannel* sysChannel = new QCopChannel( "QPE/System", this ); |
160 | connect(sysChannel, SIGNAL(received(const QCString &, const QByteArray &)), | 160 | connect(sysChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
161 | this, SLOT(message(const QCString &, const QByteArray &)) ); | 161 | this, SLOT(message(const QCString&,const QByteArray&)) ); |
162 | #endif | 162 | #endif |
163 | calcMaxWindowRect(); | 163 | calcMaxWindowRect(); |
164 | 164 | ||
165 | m_calHandler = ( QWSServer::mouseHandler() && QWSServer::mouseHandler()->inherits("QCalibratedMouseHandler") ) ? true : false; | 165 | m_calHandler = ( QWSServer::mouseHandler() && QWSServer::mouseHandler()->inherits("QCalibratedMouseHandler") ) ? true : false; |
166 | 166 | ||
167 | if ( m_calHandler) { | 167 | if ( m_calHandler) { |
168 | if ( !QFile::exists("/etc/pointercal") ) { | 168 | if ( !QFile::exists("/etc/pointercal") ) { |
169 | needCalibrate = TRUE; | 169 | needCalibrate = TRUE; |
170 | grabMouse(); | 170 | grabMouse(); |
171 | } | 171 | } |
172 | } | 172 | } |
173 | 173 | ||
174 | Config config("locale"); | 174 | Config config("locale"); |
175 | config.setGroup( "Language"); | 175 | config.setGroup( "Language"); |
176 | lang = config.readEntry( "Language", "en"); | 176 | lang = config.readEntry( "Language", "en"); |
177 | 177 | ||
178 | defaultFont = font(); | 178 | defaultFont = font(); |
179 | 179 | ||
180 | //###language/font hack; should look it up somewhere | 180 | //###language/font hack; should look it up somewhere |
181 | #ifdef Q_WS_QWS | 181 | #ifdef Q_WS_QWS |
182 | if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { | 182 | if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { |
183 | QFont fn = FontManager::unicodeFont( FontManager::Proportional ); | 183 | QFont fn = FontManager::unicodeFont( FontManager::Proportional ); |
184 | qApp->setFont( fn, TRUE ); | 184 | qApp->setFont( fn, TRUE ); |
185 | } | 185 | } |
186 | #endif | 186 | #endif |
187 | } | 187 | } |
188 | 188 | ||
189 | FirstUse::~FirstUse() | 189 | FirstUse::~FirstUse() |
190 | { | 190 | { |
191 | delete appLauncher; | 191 | delete appLauncher; |
192 | delete docList; | 192 | delete docList; |
193 | delete taskBar; | 193 | delete taskBar; |
194 | ServerApplication::allowRestart = TRUE; | 194 | ServerApplication::allowRestart = TRUE; |
195 | } | 195 | } |
196 | 196 | ||
197 | void FirstUse::calcMaxWindowRect() | 197 | void FirstUse::calcMaxWindowRect() |
198 | { | 198 | { |
199 | #ifdef Q_WS_QWS | 199 | #ifdef Q_WS_QWS |
200 | QRect wr; | 200 | QRect wr; |
201 | int displayWidth = qApp->desktop()->width(); | 201 | int displayWidth = qApp->desktop()->width(); |
202 | QRect ir = inputMethods->inputRect(); | 202 | QRect ir = inputMethods->inputRect(); |
203 | if ( ir.isValid() ) { | 203 | if ( ir.isValid() ) { |
204 | wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); | 204 | wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); |
205 | } else { | 205 | } else { |
206 | wr.setCoords( 0, 0, displayWidth-1, | 206 | wr.setCoords( 0, 0, displayWidth-1, |
207 | qApp->desktop()->height() - controlHeight-1); | 207 | qApp->desktop()->height() - controlHeight-1); |
208 | } | 208 | } |
209 | 209 | ||
210 | #if QT_VERSION < 0x030000 | 210 | #if QT_VERSION < 0x030000 |
211 | QWSServer::setMaxWindowRect( qt_screen->mapToDevice(wr, | 211 | QWSServer::setMaxWindowRect( qt_screen->mapToDevice(wr, |
212 | QSize(qt_screen->width(),qt_screen->height())) | 212 | QSize(qt_screen->width(),qt_screen->height())) |
213 | ); | 213 | ); |
214 | #else | 214 | #else |
215 | QWSServer::setMaxWindowRect( wr ); | 215 | QWSServer::setMaxWindowRect( wr ); |
216 | #endif | 216 | #endif |
217 | #endif | 217 | #endif |
218 | } | 218 | } |
219 | 219 | ||
220 | /* cancel current dialog, and bring up next */ | 220 | /* cancel current dialog, and bring up next */ |
221 | void FirstUse::nextDialog() | 221 | void FirstUse::nextDialog() |
222 | { | 222 | { |
223 | int prevApp = currApp; | 223 | int prevApp = currApp; |
224 | do { | 224 | do { |
225 | currApp++; | 225 | currApp++; |
226 | qDebug( "currApp = %d", currApp ); | 226 | qDebug( "currApp = %d", currApp ); |
227 | if ( settingsTable[currApp].app == 0 ) { | 227 | if ( settingsTable[currApp].app == 0 ) { |
228 | if ( prevApp >= 0 && appLauncher->isRunning(settingsTable[prevApp].app) ) { | 228 | if ( prevApp >= 0 && appLauncher->isRunning(settingsTable[prevApp].app) ) { |
229 | // The last application is still running. | 229 | // The last application is still running. |
230 | // Tell it to stop, and when its done we'll come back | 230 | // Tell it to stop, and when its done we'll come back |
231 | // to nextDialog and exit. | 231 | // to nextDialog and exit. |
232 | qDebug( "Waiting for %s to exit", settingsTable[prevApp].app ); | 232 | qDebug( "Waiting for %s to exit", settingsTable[prevApp].app ); |
233 | QCopEnvelope e(QCString("QPE/Application/") + settingsTable[prevApp].app, | 233 | QCopEnvelope e(QCString("QPE/Application/") + settingsTable[prevApp].app, |
234 | settingsTable[prevApp].stop ); | 234 | settingsTable[prevApp].stop ); |
235 | currApp = prevApp; | 235 | currApp = prevApp; |
236 | } else { | 236 | } else { |
237 | qDebug( "Done!" ); | 237 | qDebug( "Done!" ); |
238 | Config config( "qpe" ); | 238 | Config config( "qpe" ); |
239 | config.setGroup( "Startup" ); | 239 | config.setGroup( "Startup" ); |
240 | config.writeEntry( "FirstUse", FALSE ); | 240 | config.writeEntry( "FirstUse", FALSE ); |
241 | QPixmap pix = Resource::loadPixmap("bigwait"); | 241 | QPixmap pix = Resource::loadPixmap("bigwait"); |
242 | QLabel *lblWait = new QLabel(0, "wait hack!", // No tr | 242 | QLabel *lblWait = new QLabel(0, "wait hack!", // No tr |
243 | QWidget::WStyle_Customize | QWidget::WDestructiveClose | | 243 | QWidget::WStyle_Customize | QWidget::WDestructiveClose | |
244 | QWidget::WStyle_NoBorder | QWidget::WStyle_Tool | | 244 | QWidget::WStyle_NoBorder | QWidget::WStyle_Tool | |
245 | QWidget::WStyle_StaysOnTop); | 245 | QWidget::WStyle_StaysOnTop); |
246 | lblWait->setPixmap( pix ); | 246 | lblWait->setPixmap( pix ); |
247 | lblWait->setAlignment( QWidget::AlignCenter ); | 247 | lblWait->setAlignment( QWidget::AlignCenter ); |
248 | lblWait->setGeometry( qApp->desktop()->geometry() ); | 248 | lblWait->setGeometry( qApp->desktop()->geometry() ); |
249 | lblWait->show(); | 249 | lblWait->show(); |
250 | qApp->processEvents(); | 250 | qApp->processEvents(); |
251 | QTimer::singleShot( 1000, lblWait, SLOT(close()) ); | 251 | QTimer::singleShot( 1000, lblWait, SLOT(close()) ); |
252 | repaint(); | 252 | repaint(); |
253 | close(); | 253 | close(); |
254 | ServerApplication::allowRestart = TRUE; | 254 | ServerApplication::allowRestart = TRUE; |
255 | } | 255 | } |
256 | return; | 256 | return; |
257 | } | 257 | } |
diff --git a/core/launcher/inputmethods.cpp b/core/launcher/inputmethods.cpp index 683f1e2..19e799a 100644 --- a/core/launcher/inputmethods.cpp +++ b/core/launcher/inputmethods.cpp | |||
@@ -52,194 +52,194 @@ static const char * tri_xpm[]={ | |||
52 | "9 9 2 1", | 52 | "9 9 2 1", |
53 | "a c #000000", | 53 | "a c #000000", |
54 | ". c None", | 54 | ". c None", |
55 | ".........", | 55 | ".........", |
56 | ".........", | 56 | ".........", |
57 | ".........", | 57 | ".........", |
58 | "....a....", | 58 | "....a....", |
59 | "...aaa...", | 59 | "...aaa...", |
60 | "..aaaaa..", | 60 | "..aaaaa..", |
61 | ".aaaaaaa.", | 61 | ".aaaaaaa.", |
62 | ".........", | 62 | ".........", |
63 | "........."}; | 63 | "........."}; |
64 | 64 | ||
65 | int InputMethod::operator <(const InputMethod& o) const | 65 | int InputMethod::operator <(const InputMethod& o) const |
66 | { | 66 | { |
67 | return name() < o.name(); | 67 | return name() < o.name(); |
68 | } | 68 | } |
69 | int InputMethod::operator >(const InputMethod& o) const | 69 | int InputMethod::operator >(const InputMethod& o) const |
70 | { | 70 | { |
71 | return name() > o.name(); | 71 | return name() > o.name(); |
72 | } | 72 | } |
73 | int InputMethod::operator <=(const InputMethod& o) const | 73 | int InputMethod::operator <=(const InputMethod& o) const |
74 | { | 74 | { |
75 | return name() <= o.name(); | 75 | return name() <= o.name(); |
76 | } | 76 | } |
77 | 77 | ||
78 | 78 | ||
79 | /* | 79 | /* |
80 | Slightly hacky: We use WStyle_Tool as a flag to say "this widget | 80 | Slightly hacky: We use WStyle_Tool as a flag to say "this widget |
81 | belongs to the IM system, so clicking it should not cause a reset". | 81 | belongs to the IM system, so clicking it should not cause a reset". |
82 | */ | 82 | */ |
83 | class IMToolButton : public QToolButton | 83 | class IMToolButton : public QToolButton |
84 | { | 84 | { |
85 | public: | 85 | public: |
86 | IMToolButton::IMToolButton( QWidget *parent ) : QToolButton( parent ) | 86 | IMToolButton::IMToolButton( QWidget *parent ) : QToolButton( parent ) |
87 | { setWFlags( WStyle_Tool ); } | 87 | { setWFlags( WStyle_Tool ); } |
88 | }; | 88 | }; |
89 | 89 | ||
90 | 90 | ||
91 | InputMethods::InputMethods( QWidget *parent ) : | 91 | InputMethods::InputMethods( QWidget *parent ) : |
92 | QWidget( parent, "InputMethods", WStyle_Tool | WStyle_Customize ), | 92 | QWidget( parent, "InputMethods", WStyle_Tool | WStyle_Customize ), |
93 | mkeyboard(0), imethod(0) | 93 | mkeyboard(0), imethod(0) |
94 | { | 94 | { |
95 | Config cfg( "Launcher" ); | 95 | Config cfg( "Launcher" ); |
96 | cfg.setGroup( "InputMethods" ); | 96 | cfg.setGroup( "InputMethods" ); |
97 | inputWidgetStyle = QWidget::WStyle_Customize | QWidget::WStyle_StaysOnTop | QWidget::WGroupLeader | QWidget::WStyle_Tool; | 97 | inputWidgetStyle = QWidget::WStyle_Customize | QWidget::WStyle_StaysOnTop | QWidget::WGroupLeader | QWidget::WStyle_Tool; |
98 | inputWidgetStyle |= cfg.readBoolEntry( "Float", false ) ? QWidget::WStyle_DialogBorder : 0; | 98 | inputWidgetStyle |= cfg.readBoolEntry( "Float", false ) ? QWidget::WStyle_DialogBorder : 0; |
99 | inputWidgetWidth = cfg.readNumEntry( "Width", 100 ); | 99 | inputWidgetWidth = cfg.readNumEntry( "Width", 100 ); |
100 | 100 | ||
101 | setBackgroundMode( PaletteBackground ); | 101 | setBackgroundMode( PaletteBackground ); |
102 | QHBoxLayout *hbox = new QHBoxLayout( this ); | 102 | QHBoxLayout *hbox = new QHBoxLayout( this ); |
103 | 103 | ||
104 | kbdButton = new IMToolButton( this); | 104 | kbdButton = new IMToolButton( this); |
105 | kbdButton->setFocusPolicy(NoFocus); | 105 | kbdButton->setFocusPolicy(NoFocus); |
106 | kbdButton->setToggleButton( TRUE ); | 106 | kbdButton->setToggleButton( TRUE ); |
107 | if (parent->sizeHint().height() > 0) | 107 | if (parent->sizeHint().height() > 0) |
108 | kbdButton->setFixedHeight( parent->sizeHint().height() ); | 108 | kbdButton->setFixedHeight( parent->sizeHint().height() ); |
109 | kbdButton->setFixedWidth( 32 ); | 109 | kbdButton->setFixedWidth( 32 ); |
110 | kbdButton->setAutoRaise( TRUE ); | 110 | kbdButton->setAutoRaise( TRUE ); |
111 | kbdButton->setUsesBigPixmap( TRUE ); | 111 | kbdButton->setUsesBigPixmap( TRUE ); |
112 | hbox->addWidget( kbdButton ); | 112 | hbox->addWidget( kbdButton ); |
113 | connect( kbdButton, SIGNAL(toggled(bool)), this, SLOT(showKbd(bool)) ); | 113 | connect( kbdButton, SIGNAL(toggled(bool)), this, SLOT(showKbd(bool)) ); |
114 | 114 | ||
115 | kbdChoice = new IMToolButton( this ); | 115 | kbdChoice = new IMToolButton( this ); |
116 | kbdChoice->setFocusPolicy(NoFocus); | 116 | kbdChoice->setFocusPolicy(NoFocus); |
117 | kbdChoice->setPixmap( QPixmap( (const char **)tri_xpm ) ); | 117 | kbdChoice->setPixmap( QPixmap( (const char **)tri_xpm ) ); |
118 | if (parent->sizeHint().height() > 0) | 118 | if (parent->sizeHint().height() > 0) |
119 | kbdChoice->setFixedHeight( parent->sizeHint().height() ); | 119 | kbdChoice->setFixedHeight( parent->sizeHint().height() ); |
120 | kbdChoice->setFixedWidth( 13 ); | 120 | kbdChoice->setFixedWidth( 13 ); |
121 | kbdChoice->setAutoRaise( TRUE ); | 121 | kbdChoice->setAutoRaise( TRUE ); |
122 | hbox->addWidget( kbdChoice ); | 122 | hbox->addWidget( kbdChoice ); |
123 | connect( kbdChoice, SIGNAL(clicked()), this, SLOT(chooseKbd()) ); | 123 | connect( kbdChoice, SIGNAL(clicked()), this, SLOT(chooseKbd()) ); |
124 | 124 | ||
125 | connect( (QPEApplication*)qApp, SIGNAL(clientMoused()), | 125 | connect( (QPEApplication*)qApp, SIGNAL(clientMoused()), |
126 | this, SLOT(resetStates()) ); | 126 | this, SLOT(resetStates()) ); |
127 | 127 | ||
128 | 128 | ||
129 | imButton = new QWidgetStack( this ); // later a widget stack | 129 | imButton = new QWidgetStack( this ); // later a widget stack |
130 | imButton->setFocusPolicy(NoFocus); | 130 | imButton->setFocusPolicy(NoFocus); |
131 | if (parent->sizeHint().height() > 0) | 131 | if (parent->sizeHint().height() > 0) |
132 | imButton->setFixedHeight( parent->sizeHint().height() ); | 132 | imButton->setFixedHeight( parent->sizeHint().height() ); |
133 | hbox->addWidget(imButton); | 133 | hbox->addWidget(imButton); |
134 | 134 | ||
135 | imChoice = new QToolButton( this ); | 135 | imChoice = new QToolButton( this ); |
136 | imChoice->setFocusPolicy(NoFocus); | 136 | imChoice->setFocusPolicy(NoFocus); |
137 | imChoice->setPixmap( QPixmap( (const char **)tri_xpm ) ); | 137 | imChoice->setPixmap( QPixmap( (const char **)tri_xpm ) ); |
138 | if (parent->sizeHint().height() > 0) | 138 | if (parent->sizeHint().height() > 0) |
139 | imChoice->setFixedHeight( parent->sizeHint().height() ); | 139 | imChoice->setFixedHeight( parent->sizeHint().height() ); |
140 | imChoice->setFixedWidth( 13 ); | 140 | imChoice->setFixedWidth( 13 ); |
141 | imChoice->setAutoRaise( TRUE ); | 141 | imChoice->setAutoRaise( TRUE ); |
142 | hbox->addWidget( imChoice ); | 142 | hbox->addWidget( imChoice ); |
143 | connect( imChoice, SIGNAL(clicked()), this, SLOT(chooseIm()) ); | 143 | connect( imChoice, SIGNAL(clicked()), this, SLOT(chooseIm()) ); |
144 | 144 | ||
145 | loadInputMethods(); | 145 | loadInputMethods(); |
146 | 146 | ||
147 | QCopChannel *channel = new QCopChannel( "QPE/IME", this ); | 147 | QCopChannel *channel = new QCopChannel( "QPE/IME", this ); |
148 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), | 148 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
149 | this, SLOT(qcopReceive(const QCString&, const QByteArray&)) ); | 149 | this, SLOT(qcopReceive(const QCString&,const QByteArray&)) ); |
150 | } | 150 | } |
151 | 151 | ||
152 | InputMethods::~InputMethods() | 152 | InputMethods::~InputMethods() |
153 | { | 153 | { |
154 | Config cfg("qpe"); | 154 | Config cfg("qpe"); |
155 | cfg.setGroup("InputMethod"); | 155 | cfg.setGroup("InputMethod"); |
156 | if (imethod) | 156 | if (imethod) |
157 | cfg.writeEntry("im", imethod->name() ); | 157 | cfg.writeEntry("im", imethod->name() ); |
158 | if (mkeyboard) | 158 | if (mkeyboard) |
159 | cfg.writeEntry("current", mkeyboard->name() ); | 159 | cfg.writeEntry("current", mkeyboard->name() ); |
160 | 160 | ||
161 | unloadInputMethods(); | 161 | unloadInputMethods(); |
162 | } | 162 | } |
163 | 163 | ||
164 | void InputMethods::hideInputMethod() | 164 | void InputMethods::hideInputMethod() |
165 | { | 165 | { |
166 | kbdButton->setOn( FALSE ); | 166 | kbdButton->setOn( FALSE ); |
167 | } | 167 | } |
168 | 168 | ||
169 | void InputMethods::showInputMethod() | 169 | void InputMethods::showInputMethod() |
170 | { | 170 | { |
171 | kbdButton->setOn( TRUE ); | 171 | kbdButton->setOn( TRUE ); |
172 | } | 172 | } |
173 | 173 | ||
174 | void InputMethods::showInputMethod(const QString& name) | 174 | void InputMethods::showInputMethod(const QString& name) |
175 | { | 175 | { |
176 | int i = 0; | 176 | int i = 0; |
177 | QValueList<InputMethod>::Iterator it; | 177 | QValueList<InputMethod>::Iterator it; |
178 | InputMethod *im = 0; | 178 | InputMethod *im = 0; |
179 | for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) { | 179 | for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) { |
180 | QString lname = (*it).libName.mid((*it).libName.findRev('/') + 1); | 180 | QString lname = (*it).libName.mid((*it).libName.findRev('/') + 1); |
181 | if ( (*it).name() == name || lname == name ) { | 181 | if ( (*it).name() == name || lname == name ) { |
182 | im = &(*it); | 182 | im = &(*it); |
183 | break; | 183 | break; |
184 | } | 184 | } |
185 | } | 185 | } |
186 | if ( im ) | 186 | if ( im ) |
187 | chooseKeyboard(im); | 187 | chooseKeyboard(im); |
188 | } | 188 | } |
189 | 189 | ||
190 | void InputMethods::resetStates() | 190 | void InputMethods::resetStates() |
191 | { | 191 | { |
192 | if ( mkeyboard && !mkeyboard->newIM ) | 192 | if ( mkeyboard && !mkeyboard->newIM ) |
193 | mkeyboard->interface->resetState(); | 193 | mkeyboard->interface->resetState(); |
194 | } | 194 | } |
195 | 195 | ||
196 | QRect InputMethods::inputRect() const | 196 | QRect InputMethods::inputRect() const |
197 | { | 197 | { |
198 | if ( !mkeyboard || !mkeyboard->widget || !mkeyboard->widget->isVisible() ) | 198 | if ( !mkeyboard || !mkeyboard->widget || !mkeyboard->widget->isVisible() ) |
199 | return QRect(); | 199 | return QRect(); |
200 | else | 200 | else |
201 | return mkeyboard->widget->geometry(); | 201 | return mkeyboard->widget->geometry(); |
202 | } | 202 | } |
203 | 203 | ||
204 | void InputMethods::unloadInputMethods() | 204 | void InputMethods::unloadInputMethods() |
205 | { | 205 | { |
206 | unloadMethod( inputMethodList ); | 206 | unloadMethod( inputMethodList ); |
207 | unloadMethod( inputModifierList ); | 207 | unloadMethod( inputModifierList ); |
208 | inputMethodList.clear(); | 208 | inputMethodList.clear(); |
209 | inputModifierList.clear(); | 209 | inputModifierList.clear(); |
210 | 210 | ||
211 | } | 211 | } |
212 | 212 | ||
213 | void InputMethods::unloadMethod( QValueList<InputMethod>& list ) { | 213 | void InputMethods::unloadMethod( QValueList<InputMethod>& list ) { |
214 | QValueList<InputMethod>::Iterator it; | 214 | QValueList<InputMethod>::Iterator it; |
215 | 215 | ||
216 | for (it = list.begin(); it != list.end(); ++it ) | 216 | for (it = list.begin(); it != list.end(); ++it ) |
217 | (*it).releaseInterface(); | 217 | (*it).releaseInterface(); |
218 | 218 | ||
219 | } | 219 | } |
220 | 220 | ||
221 | 221 | ||
222 | QStringList InputMethods::plugins()const { | 222 | QStringList InputMethods::plugins()const { |
223 | QString path = QPEApplication::qpeDir() + "/plugins/inputmethods"; | 223 | QString path = QPEApplication::qpeDir() + "/plugins/inputmethods"; |
224 | #ifdef Q_OS_MACX | 224 | #ifdef Q_OS_MACX |
225 | QDir dir( path, "lib*.dylib" ); | 225 | QDir dir( path, "lib*.dylib" ); |
226 | #else | 226 | #else |
227 | QDir dir( path, "lib*.so" ); | 227 | QDir dir( path, "lib*.so" ); |
228 | #endif /* Q_OS_MACX */ | 228 | #endif /* Q_OS_MACX */ |
229 | return dir.entryList(); | 229 | return dir.entryList(); |
230 | } | 230 | } |
231 | 231 | ||
232 | void InputMethods::installTranslator( const QString& type ) { | 232 | void InputMethods::installTranslator( const QString& type ) { |
233 | QStringList langs = Global::languageList(); | 233 | QStringList langs = Global::languageList(); |
234 | QStringList::ConstIterator lit; | 234 | QStringList::ConstIterator lit; |
235 | for ( lit= langs.begin(); lit!=langs.end(); ++lit) { | 235 | for ( lit= langs.begin(); lit!=langs.end(); ++lit) { |
236 | QString lang = *lit; | 236 | QString lang = *lit; |
237 | QTranslator * trans = new QTranslator(qApp); | 237 | QTranslator * trans = new QTranslator(qApp); |
238 | 238 | ||
239 | QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; | 239 | QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; |
240 | 240 | ||
241 | if ( trans->load( tfn )) | 241 | if ( trans->load( tfn )) |
242 | qApp->installTranslator( trans ); | 242 | qApp->installTranslator( trans ); |
243 | else | 243 | else |
244 | delete trans; | 244 | delete trans; |
245 | } | 245 | } |
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp index 54efb0b..5d0c778 100644 --- a/core/launcher/launcher.cpp +++ b/core/launcher/launcher.cpp | |||
@@ -5,196 +5,196 @@ | |||
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include <qtopia/global.h> | 21 | #include <qtopia/global.h> |
22 | #ifdef Q_WS_QWS | 22 | #ifdef Q_WS_QWS |
23 | #include <qtopia/qcopenvelope_qws.h> | 23 | #include <qtopia/qcopenvelope_qws.h> |
24 | #endif | 24 | #endif |
25 | #include <qtopia/resource.h> | 25 | #include <qtopia/resource.h> |
26 | #include <qtopia/applnk.h> | 26 | #include <qtopia/applnk.h> |
27 | #include <qtopia/config.h> | 27 | #include <qtopia/config.h> |
28 | #include <qtopia/qpeapplication.h> | 28 | #include <qtopia/qpeapplication.h> |
29 | #include <qtopia/mimetype.h> | 29 | #include <qtopia/mimetype.h> |
30 | #include <qtopia/private/categories.h> | 30 | #include <qtopia/private/categories.h> |
31 | //#include <qtopia/custom.h> | 31 | //#include <qtopia/custom.h> |
32 | 32 | ||
33 | #include <qdir.h> | 33 | #include <qdir.h> |
34 | #ifdef Q_WS_QWS | 34 | #ifdef Q_WS_QWS |
35 | #include <qwindowsystem_qws.h> | 35 | #include <qwindowsystem_qws.h> |
36 | #endif | 36 | #endif |
37 | #include <qtimer.h> | 37 | #include <qtimer.h> |
38 | #include <qcombobox.h> | 38 | #include <qcombobox.h> |
39 | #include <qvbox.h> | 39 | #include <qvbox.h> |
40 | #include <qlayout.h> | 40 | #include <qlayout.h> |
41 | #include <qstyle.h> | 41 | #include <qstyle.h> |
42 | #include <qpushbutton.h> | 42 | #include <qpushbutton.h> |
43 | #include <qtabbar.h> | 43 | #include <qtabbar.h> |
44 | #include <qwidgetstack.h> | 44 | #include <qwidgetstack.h> |
45 | #include <qregexp.h> | 45 | #include <qregexp.h> |
46 | #include <qmessagebox.h> | 46 | #include <qmessagebox.h> |
47 | #include <qframe.h> | 47 | #include <qframe.h> |
48 | #include <qpainter.h> | 48 | #include <qpainter.h> |
49 | #include <qlabel.h> | 49 | #include <qlabel.h> |
50 | #include <qtextstream.h> | 50 | #include <qtextstream.h> |
51 | #include <qpopupmenu.h> | 51 | #include <qpopupmenu.h> |
52 | 52 | ||
53 | #include "startmenu.h" | 53 | #include "startmenu.h" |
54 | #include "taskbar.h" | 54 | #include "taskbar.h" |
55 | 55 | ||
56 | #include "serverinterface.h" | 56 | #include "serverinterface.h" |
57 | #include "launcherview.h" | 57 | #include "launcherview.h" |
58 | #include "launcher.h" | 58 | #include "launcher.h" |
59 | #include "server.h" | 59 | #include "server.h" |
60 | 60 | ||
61 | #define QTOPIA_INTERNAL_FSLP | 61 | #define QTOPIA_INTERNAL_FSLP |
62 | #include <qtopia/lnkproperties.h> | 62 | #include <qtopia/lnkproperties.h> |
63 | #include <stdlib.h> | 63 | #include <stdlib.h> |
64 | #include <assert.h> | 64 | #include <assert.h> |
65 | 65 | ||
66 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) | 66 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) |
67 | #include <unistd.h> | 67 | #include <unistd.h> |
68 | #include <stdio.h> | 68 | #include <stdio.h> |
69 | #include <sys/vfs.h> | 69 | #include <sys/vfs.h> |
70 | #include <mntent.h> | 70 | #include <mntent.h> |
71 | #endif | 71 | #endif |
72 | 72 | ||
73 | #ifdef Q_WS_QWS | 73 | #ifdef Q_WS_QWS |
74 | #include <qkeyboard_qws.h> | 74 | #include <qkeyboard_qws.h> |
75 | #include <qpe/lnkproperties.h> | 75 | #include <qpe/lnkproperties.h> |
76 | #endif | 76 | #endif |
77 | 77 | ||
78 | 78 | ||
79 | static bool isVisibleWindow( int ); | 79 | static bool isVisibleWindow( int ); |
80 | //=========================================================================== | 80 | //=========================================================================== |
81 | 81 | ||
82 | LauncherTabWidget::LauncherTabWidget( Launcher* parent ) : | 82 | LauncherTabWidget::LauncherTabWidget( Launcher* parent ) : |
83 | QVBox( parent ), docview( 0 ) | 83 | QVBox( parent ), docview( 0 ) |
84 | { | 84 | { |
85 | docLoadingWidgetEnabled = false; | 85 | docLoadingWidgetEnabled = false; |
86 | docLoadingWidget = 0; | 86 | docLoadingWidget = 0; |
87 | docLoadingWidgetProgress = 0; | 87 | docLoadingWidgetProgress = 0; |
88 | launcher = parent; | 88 | launcher = parent; |
89 | categoryBar = new LauncherTabBar( this ); | 89 | categoryBar = new LauncherTabBar( this ); |
90 | QPalette pal = categoryBar->palette(); | 90 | QPalette pal = categoryBar->palette(); |
91 | pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) ); | 91 | pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) ); |
92 | pal.setColor( QColorGroup::Background, pal.active().background().light(110) ); | 92 | pal.setColor( QColorGroup::Background, pal.active().background().light(110) ); |
93 | categoryBar->setPalette( pal ); | 93 | categoryBar->setPalette( pal ); |
94 | stack = new QWidgetStack(this); | 94 | stack = new QWidgetStack(this); |
95 | connect( categoryBar, SIGNAL(selected(int)), this, SLOT(raiseTabWidget()) ); | 95 | connect( categoryBar, SIGNAL(selected(int)), this, SLOT(raiseTabWidget()) ); |
96 | categoryBar->show(); | 96 | categoryBar->show(); |
97 | stack->show(); | 97 | stack->show(); |
98 | 98 | ||
99 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 99 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
100 | QCopChannel *channel = new QCopChannel( "QPE/Launcher", this ); | 100 | QCopChannel *channel = new QCopChannel( "QPE/Launcher", this ); |
101 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), | 101 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
102 | this, SLOT(launcherMessage(const QCString&, const QByteArray&)) ); | 102 | this, SLOT(launcherMessage(const QCString&,const QByteArray&)) ); |
103 | connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray&)), | 103 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), |
104 | this, SLOT(appMessage(const QCString&, const QByteArray&))); | 104 | this, SLOT(appMessage(const QCString&,const QByteArray&))); |
105 | #endif | 105 | #endif |
106 | 106 | ||
107 | createDocLoadingWidget(); | 107 | createDocLoadingWidget(); |
108 | } | 108 | } |
109 | 109 | ||
110 | void LauncherTabWidget::createDocLoadingWidget() | 110 | void LauncherTabWidget::createDocLoadingWidget() |
111 | { | 111 | { |
112 | // Construct the 'doc loading widget' shown when finding documents | 112 | // Construct the 'doc loading widget' shown when finding documents |
113 | 113 | ||
114 | // ### LauncherView class needs changing to be more generic so | 114 | // ### LauncherView class needs changing to be more generic so |
115 | // this widget can change its background similar to the iconviews | 115 | // this widget can change its background similar to the iconviews |
116 | // so the background for this matches | 116 | // so the background for this matches |
117 | docLoadingWidget = new LauncherView( stack ); | 117 | docLoadingWidget = new LauncherView( stack ); |
118 | docLoadingWidget->hideIcons(); | 118 | docLoadingWidget->hideIcons(); |
119 | QVBox *docLoadingVBox = new QVBox( docLoadingWidget ); | 119 | QVBox *docLoadingVBox = new QVBox( docLoadingWidget ); |
120 | 120 | ||
121 | docLoadingVBox->setSpacing( 20 ); | 121 | docLoadingVBox->setSpacing( 20 ); |
122 | docLoadingVBox->setMargin( 10 ); | 122 | docLoadingVBox->setMargin( 10 ); |
123 | 123 | ||
124 | QWidget *space1 = new QWidget( docLoadingVBox ); | 124 | QWidget *space1 = new QWidget( docLoadingVBox ); |
125 | docLoadingVBox->setStretchFactor( space1, 1 ); | 125 | docLoadingVBox->setStretchFactor( space1, 1 ); |
126 | 126 | ||
127 | QLabel *waitPixmap = new QLabel( docLoadingVBox ); | 127 | QLabel *waitPixmap = new QLabel( docLoadingVBox ); |
128 | waitPixmap->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, waitPixmap->sizePolicy().hasHeightForWidth() ) ); | 128 | waitPixmap->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, waitPixmap->sizePolicy().hasHeightForWidth() ) ); |
129 | waitPixmap->setPixmap( Resource::loadPixmap( "bigwait" ) ); | 129 | waitPixmap->setPixmap( Resource::loadPixmap( "bigwait" ) ); |
130 | waitPixmap->setAlignment( int( QLabel::AlignCenter ) ); | 130 | waitPixmap->setAlignment( int( QLabel::AlignCenter ) ); |
131 | 131 | ||
132 | Config cfg( "Launcher" ); | 132 | Config cfg( "Launcher" ); |
133 | cfg.setGroup( "DocTab" ); | 133 | cfg.setGroup( "DocTab" ); |
134 | bool docTabEnabled = cfg.readBoolEntry( "Enable", true ); | 134 | bool docTabEnabled = cfg.readBoolEntry( "Enable", true ); |
135 | 135 | ||
136 | QLabel *textLabel = new QLabel( docLoadingVBox ); | 136 | QLabel *textLabel = new QLabel( docLoadingVBox ); |
137 | textLabel->setAlignment( int( QLabel::AlignCenter ) ); | 137 | textLabel->setAlignment( int( QLabel::AlignCenter ) ); |
138 | docLoadingWidgetProgress = new QProgressBar( docLoadingVBox ); | 138 | docLoadingWidgetProgress = new QProgressBar( docLoadingVBox ); |
139 | docLoadingWidgetProgress->setProgress( 0 ); | 139 | docLoadingWidgetProgress->setProgress( 0 ); |
140 | docLoadingWidgetProgress->setCenterIndicator( TRUE ); | 140 | docLoadingWidgetProgress->setCenterIndicator( TRUE ); |
141 | docLoadingWidgetProgress->setBackgroundMode( NoBackground ); // No flicker | 141 | docLoadingWidgetProgress->setBackgroundMode( NoBackground ); // No flicker |
142 | setProgressStyle(); | 142 | setProgressStyle(); |
143 | 143 | ||
144 | if ( docTabEnabled ) | 144 | if ( docTabEnabled ) |
145 | { | 145 | { |
146 | textLabel->setText( tr( "<b>Finding Documents...</b>" ) ); | 146 | textLabel->setText( tr( "<b>Finding Documents...</b>" ) ); |
147 | } | 147 | } |
148 | else | 148 | else |
149 | { | 149 | { |
150 | textLabel->setText( tr( "<b>The Documents Tab<p>has been disabled.<p>" | 150 | textLabel->setText( tr( "<b>The Documents Tab<p>has been disabled.<p>" |
151 | "Use Settings->Launcher->DocTab<p>to reenable it.</b></center>" ) ); | 151 | "Use Settings->Launcher->DocTab<p>to reenable it.</b></center>" ) ); |
152 | docLoadingWidgetProgress->hide(); | 152 | docLoadingWidgetProgress->hide(); |
153 | docLoadingWidgetEnabled = true; | 153 | docLoadingWidgetEnabled = true; |
154 | } | 154 | } |
155 | 155 | ||
156 | QWidget *space2 = new QWidget( docLoadingVBox ); | 156 | QWidget *space2 = new QWidget( docLoadingVBox ); |
157 | docLoadingVBox->setStretchFactor( space2, 1 ); | 157 | docLoadingVBox->setStretchFactor( space2, 1 ); |
158 | 158 | ||
159 | cfg.setGroup( "Tab Documents" ); // No tr | 159 | cfg.setGroup( "Tab Documents" ); // No tr |
160 | setTabViewAppearance( docLoadingWidget, cfg ); | 160 | setTabViewAppearance( docLoadingWidget, cfg ); |
161 | 161 | ||
162 | stack->addWidget( docLoadingWidget, 0 ); | 162 | stack->addWidget( docLoadingWidget, 0 ); |
163 | } | 163 | } |
164 | 164 | ||
165 | void LauncherTabWidget::initLayout() | 165 | void LauncherTabWidget::initLayout() |
166 | { | 166 | { |
167 | layout()->activate(); | 167 | layout()->activate(); |
168 | docView()->setFocus(); | 168 | docView()->setFocus(); |
169 | categoryBar->showTab("Documents"); | 169 | categoryBar->showTab("Documents"); |
170 | } | 170 | } |
171 | 171 | ||
172 | void LauncherTabWidget::appMessage(const QCString& message, const QByteArray&) | 172 | void LauncherTabWidget::appMessage(const QCString& message, const QByteArray&) |
173 | { | 173 | { |
174 | if ( message == "nextView()" ) | 174 | if ( message == "nextView()" ) |
175 | categoryBar->nextTab(); | 175 | categoryBar->nextTab(); |
176 | } | 176 | } |
177 | 177 | ||
178 | void LauncherTabWidget::raiseTabWidget() | 178 | void LauncherTabWidget::raiseTabWidget() |
179 | { | 179 | { |
180 | if ( categoryBar->currentView() == docView() | 180 | if ( categoryBar->currentView() == docView() |
181 | && docLoadingWidgetEnabled ) { | 181 | && docLoadingWidgetEnabled ) { |
182 | stack->raiseWidget( docLoadingWidget ); | 182 | stack->raiseWidget( docLoadingWidget ); |
183 | docLoadingWidget->updateGeometry(); | 183 | docLoadingWidget->updateGeometry(); |
184 | } else { | 184 | } else { |
185 | stack->raiseWidget( categoryBar->currentView() ); | 185 | stack->raiseWidget( categoryBar->currentView() ); |
186 | } | 186 | } |
187 | } | 187 | } |
188 | 188 | ||
189 | void LauncherTabWidget::tabProperties() | 189 | void LauncherTabWidget::tabProperties() |
190 | { | 190 | { |
191 | LauncherView *view = categoryBar->currentView(); | 191 | LauncherView *view = categoryBar->currentView(); |
192 | QPopupMenu *m = new QPopupMenu( this ); | 192 | QPopupMenu *m = new QPopupMenu( this ); |
193 | m->insertItem( tr("Icon View"), LauncherView::Icon ); | 193 | m->insertItem( tr("Icon View"), LauncherView::Icon ); |
194 | m->insertItem( tr("List View"), LauncherView::List ); | 194 | m->insertItem( tr("List View"), LauncherView::List ); |
195 | m->setItemChecked( (int)view->viewMode(), TRUE ); | 195 | m->setItemChecked( (int)view->viewMode(), TRUE ); |
196 | int rv = m->exec( QCursor::pos() ); | 196 | int rv = m->exec( QCursor::pos() ); |
197 | if ( rv >= 0 && rv != view->viewMode() ) { | 197 | if ( rv >= 0 && rv != view->viewMode() ) { |
198 | view->setViewMode( (LauncherView::ViewMode)rv ); | 198 | view->setViewMode( (LauncherView::ViewMode)rv ); |
199 | } | 199 | } |
200 | 200 | ||
@@ -384,194 +384,194 @@ void LauncherTabWidget::launcherMessage( const QCString &msg, const QByteArray & | |||
384 | stream >> id; | 384 | stream >> id; |
385 | int mode; | 385 | int mode; |
386 | stream >> mode; | 386 | stream >> mode; |
387 | QString pixmapOrColor; | 387 | QString pixmapOrColor; |
388 | stream >> pixmapOrColor; | 388 | stream >> pixmapOrColor; |
389 | if ( view(id) ) | 389 | if ( view(id) ) |
390 | view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); | 390 | view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); |
391 | if ( id == "Documents" ) | 391 | if ( id == "Documents" ) |
392 | docLoadingWidget->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); | 392 | docLoadingWidget->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); |
393 | } else if ( msg == "setTextColor(QString,QString)" ) { | 393 | } else if ( msg == "setTextColor(QString,QString)" ) { |
394 | QString id; | 394 | QString id; |
395 | stream >> id; | 395 | stream >> id; |
396 | QString color; | 396 | QString color; |
397 | stream >> color; | 397 | stream >> color; |
398 | if ( view(id) ) | 398 | if ( view(id) ) |
399 | view(id)->setTextColor( QColor(color) ); | 399 | view(id)->setTextColor( QColor(color) ); |
400 | if ( id == "Documents" ) | 400 | if ( id == "Documents" ) |
401 | docLoadingWidget->setTextColor( QColor(color) ); | 401 | docLoadingWidget->setTextColor( QColor(color) ); |
402 | } else if ( msg == "setFont(QString,QString,int,int,int)" ) { | 402 | } else if ( msg == "setFont(QString,QString,int,int,int)" ) { |
403 | QString id; | 403 | QString id; |
404 | stream >> id; | 404 | stream >> id; |
405 | QString fam; | 405 | QString fam; |
406 | stream >> fam; | 406 | stream >> fam; |
407 | int size; | 407 | int size; |
408 | stream >> size; | 408 | stream >> size; |
409 | int weight; | 409 | int weight; |
410 | stream >> weight; | 410 | stream >> weight; |
411 | int italic; | 411 | int italic; |
412 | stream >> italic; | 412 | stream >> italic; |
413 | if ( view(id) ) { | 413 | if ( view(id) ) { |
414 | if ( !fam.isEmpty() ) { | 414 | if ( !fam.isEmpty() ) { |
415 | view(id)->setViewFont( QFont(fam, size, weight, italic!=0) ); | 415 | view(id)->setViewFont( QFont(fam, size, weight, italic!=0) ); |
416 | qDebug( "setFont: %s, %d, %d, %d", fam.latin1(), size, weight, italic ); | 416 | qDebug( "setFont: %s, %d, %d, %d", fam.latin1(), size, weight, italic ); |
417 | } else { | 417 | } else { |
418 | view(id)->clearViewFont(); | 418 | view(id)->clearViewFont(); |
419 | } | 419 | } |
420 | } | 420 | } |
421 | }else if ( msg == "setBusyIndicatorType(QString)" ) { | 421 | }else if ( msg == "setBusyIndicatorType(QString)" ) { |
422 | QString type; | 422 | QString type; |
423 | stream >> type; | 423 | stream >> type; |
424 | setBusyIndicatorType( type ); | 424 | setBusyIndicatorType( type ); |
425 | }else if ( msg == "home()" ) { | 425 | }else if ( msg == "home()" ) { |
426 | if ( isVisibleWindow( static_cast<QWidget*>(parent())->winId() ) ) { | 426 | if ( isVisibleWindow( static_cast<QWidget*>(parent())->winId() ) ) { |
427 | if (categoryBar) | 427 | if (categoryBar) |
428 | categoryBar->nextTab(); | 428 | categoryBar->nextTab(); |
429 | }else | 429 | }else |
430 | static_cast<QWidget*>(parent())->raise(); | 430 | static_cast<QWidget*>(parent())->raise(); |
431 | } | 431 | } |
432 | } | 432 | } |
433 | 433 | ||
434 | 434 | ||
435 | 435 | ||
436 | //--------------------------------------------------------------------------- | 436 | //--------------------------------------------------------------------------- |
437 | 437 | ||
438 | Launcher::Launcher() | 438 | Launcher::Launcher() |
439 | : QMainWindow( 0, "PDA User Interface", QWidget::WStyle_Customize | QWidget::WGroupLeader ) | 439 | : QMainWindow( 0, "PDA User Interface", QWidget::WStyle_Customize | QWidget::WGroupLeader ) |
440 | { | 440 | { |
441 | tabs = 0; | 441 | tabs = 0; |
442 | tb = 0; | 442 | tb = 0; |
443 | Config cfg( "Launcher" ); | 443 | Config cfg( "Launcher" ); |
444 | cfg.setGroup( "DocTab" ); | 444 | cfg.setGroup( "DocTab" ); |
445 | docTabEnabled = cfg.readBoolEntry( "Enable", true ); | 445 | docTabEnabled = cfg.readBoolEntry( "Enable", true ); |
446 | } | 446 | } |
447 | 447 | ||
448 | void Launcher::createGUI() | 448 | void Launcher::createGUI() |
449 | { | 449 | { |
450 | setCaption( tr("Launcher") ); | 450 | setCaption( tr("Launcher") ); |
451 | 451 | ||
452 | // we have a pretty good idea how big we'll be | 452 | // we have a pretty good idea how big we'll be |
453 | setGeometry( 0, 0, qApp->desktop()->width(), qApp->desktop()->height() ); | 453 | setGeometry( 0, 0, qApp->desktop()->width(), qApp->desktop()->height() ); |
454 | 454 | ||
455 | tb = new TaskBar; | 455 | tb = new TaskBar; |
456 | tabs = new LauncherTabWidget( this ); | 456 | tabs = new LauncherTabWidget( this ); |
457 | setCentralWidget( tabs ); | 457 | setCentralWidget( tabs ); |
458 | 458 | ||
459 | ServerInterface::dockWidget( tb, ServerInterface::Bottom ); | 459 | ServerInterface::dockWidget( tb, ServerInterface::Bottom ); |
460 | tb->show(); | 460 | tb->show(); |
461 | 461 | ||
462 | qApp->installEventFilter( this ); | 462 | qApp->installEventFilter( this ); |
463 | 463 | ||
464 | 464 | ||
465 | connect( qApp, SIGNAL(symbol()), this, SLOT(toggleSymbolInput()) ); | 465 | connect( qApp, SIGNAL(symbol()), this, SLOT(toggleSymbolInput()) ); |
466 | connect( qApp, SIGNAL(numLockStateToggle()), this, SLOT(toggleNumLockState()) ); | 466 | connect( qApp, SIGNAL(numLockStateToggle()), this, SLOT(toggleNumLockState()) ); |
467 | connect( qApp, SIGNAL(capsLockStateToggle()), this, SLOT(toggleCapsLockState()) ); | 467 | connect( qApp, SIGNAL(capsLockStateToggle()), this, SLOT(toggleCapsLockState()) ); |
468 | 468 | ||
469 | connect( tb, SIGNAL(tabSelected(const QString&)), | 469 | connect( tb, SIGNAL(tabSelected(const QString&)), |
470 | this, SLOT(showTab(const QString&)) ); | 470 | this, SLOT(showTab(const QString&)) ); |
471 | connect( tabs, SIGNAL(selected(const QString&)), | 471 | connect( tabs, SIGNAL(selected(const QString&)), |
472 | this, SLOT(viewSelected(const QString&)) ); | 472 | this, SLOT(viewSelected(const QString&)) ); |
473 | connect( tabs, SIGNAL(clicked(const AppLnk*)), | 473 | connect( tabs, SIGNAL(clicked(const AppLnk*)), |
474 | this, SLOT(select(const AppLnk*))); | 474 | this, SLOT(select(const AppLnk*))); |
475 | connect( tabs, SIGNAL(rightPressed(AppLnk*)), | 475 | connect( tabs, SIGNAL(rightPressed(AppLnk*)), |
476 | this, SLOT(properties(AppLnk*))); | 476 | this, SLOT(properties(AppLnk*))); |
477 | 477 | ||
478 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 478 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
479 | QCopChannel* sysChannel = new QCopChannel( "QPE/System", this ); | 479 | QCopChannel* sysChannel = new QCopChannel( "QPE/System", this ); |
480 | connect( sysChannel, SIGNAL(received(const QCString &, const QByteArray &)), | 480 | connect( sysChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
481 | this, SLOT(systemMessage( const QCString &, const QByteArray &)) ); | 481 | this, SLOT(systemMessage(const QCString&,const QByteArray&)) ); |
482 | #endif | 482 | #endif |
483 | 483 | ||
484 | // all documents | 484 | // all documents |
485 | QImage img( Resource::loadImage( "DocsIcon" ) ); | 485 | QImage img( Resource::loadImage( "DocsIcon" ) ); |
486 | QPixmap pm; | 486 | QPixmap pm; |
487 | pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); | 487 | pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); |
488 | // It could add this itself if it handles docs | 488 | // It could add this itself if it handles docs |
489 | 489 | ||
490 | tabs->newView("Documents", pm, tr("Documents") )->setToolsEnabled( TRUE ); | 490 | tabs->newView("Documents", pm, tr("Documents") )->setToolsEnabled( TRUE ); |
491 | 491 | ||
492 | QTimer::singleShot( 0, tabs, SLOT( initLayout() ) ); | 492 | QTimer::singleShot( 0, tabs, SLOT( initLayout() ) ); |
493 | qApp->setMainWidget( this ); | 493 | qApp->setMainWidget( this ); |
494 | QTimer::singleShot( 500, this, SLOT( makeVisible() ) ); | 494 | QTimer::singleShot( 500, this, SLOT( makeVisible() ) ); |
495 | } | 495 | } |
496 | 496 | ||
497 | Launcher::~Launcher() | 497 | Launcher::~Launcher() |
498 | { | 498 | { |
499 | if ( tb ) | 499 | if ( tb ) |
500 | destroyGUI(); | 500 | destroyGUI(); |
501 | } | 501 | } |
502 | 502 | ||
503 | bool Launcher::requiresDocuments() const | 503 | bool Launcher::requiresDocuments() const |
504 | { | 504 | { |
505 | Config cfg( "Launcher" ); | 505 | Config cfg( "Launcher" ); |
506 | cfg.setGroup( "DocTab" ); | 506 | cfg.setGroup( "DocTab" ); |
507 | return cfg.readBoolEntry( "Enable", true ); | 507 | return cfg.readBoolEntry( "Enable", true ); |
508 | } | 508 | } |
509 | 509 | ||
510 | void Launcher::makeVisible() | 510 | void Launcher::makeVisible() |
511 | { | 511 | { |
512 | showMaximized(); | 512 | showMaximized(); |
513 | } | 513 | } |
514 | 514 | ||
515 | void Launcher::destroyGUI() | 515 | void Launcher::destroyGUI() |
516 | { | 516 | { |
517 | delete tb; | 517 | delete tb; |
518 | tb = 0; | 518 | tb = 0; |
519 | delete tabs; | 519 | delete tabs; |
520 | tabs =0; | 520 | tabs =0; |
521 | } | 521 | } |
522 | 522 | ||
523 | bool Launcher::eventFilter( QObject*, QEvent *ev ) | 523 | bool Launcher::eventFilter( QObject*, QEvent *ev ) |
524 | { | 524 | { |
525 | #ifdef QT_QWS_CUSTOM | 525 | #ifdef QT_QWS_CUSTOM |
526 | if ( ev->type() == QEvent::KeyPress ) { | 526 | if ( ev->type() == QEvent::KeyPress ) { |
527 | QKeyEvent *ke = (QKeyEvent *)ev; | 527 | QKeyEvent *ke = (QKeyEvent *)ev; |
528 | if ( ke->key() == Qt::Key_F11 ) { // menu key | 528 | if ( ke->key() == Qt::Key_F11 ) { // menu key |
529 | QWidget *active = qApp->activeWindow(); | 529 | QWidget *active = qApp->activeWindow(); |
530 | if ( active && active->isPopup() ) | 530 | if ( active && active->isPopup() ) |
531 | active->close(); | 531 | active->close(); |
532 | else { | 532 | else { |
533 | Global::terminateBuiltin("calibrate"); // No tr | 533 | Global::terminateBuiltin("calibrate"); // No tr |
534 | tb->launchStartMenu(); | 534 | tb->launchStartMenu(); |
535 | } | 535 | } |
536 | return TRUE; | 536 | return TRUE; |
537 | } | 537 | } |
538 | } | 538 | } |
539 | #else | 539 | #else |
540 | Q_UNUSED(ev); | 540 | Q_UNUSED(ev); |
541 | #endif | 541 | #endif |
542 | return FALSE; | 542 | return FALSE; |
543 | } | 543 | } |
544 | 544 | ||
545 | void Launcher::toggleSymbolInput() | 545 | void Launcher::toggleSymbolInput() |
546 | { | 546 | { |
547 | tb->toggleSymbolInput(); | 547 | tb->toggleSymbolInput(); |
548 | } | 548 | } |
549 | 549 | ||
550 | void Launcher::toggleNumLockState() | 550 | void Launcher::toggleNumLockState() |
551 | { | 551 | { |
552 | tb->toggleNumLockState(); | 552 | tb->toggleNumLockState(); |
553 | } | 553 | } |
554 | 554 | ||
555 | void Launcher::toggleCapsLockState() | 555 | void Launcher::toggleCapsLockState() |
556 | { | 556 | { |
557 | tb->toggleCapsLockState(); | 557 | tb->toggleCapsLockState(); |
558 | } | 558 | } |
559 | 559 | ||
560 | static bool isVisibleWindow(int wid) | 560 | static bool isVisibleWindow(int wid) |
561 | { | 561 | { |
562 | #ifdef Q_WS_QWS | 562 | #ifdef Q_WS_QWS |
563 | const QList<QWSWindow> &list = qwsServer->clientWindows(); | 563 | const QList<QWSWindow> &list = qwsServer->clientWindows(); |
564 | QWSWindow* w; | 564 | QWSWindow* w; |
565 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { | 565 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { |
566 | if ( w->winId() == wid ) | 566 | if ( w->winId() == wid ) |
567 | return !w->isFullyObscured(); | 567 | return !w->isFullyObscured(); |
568 | } | 568 | } |
569 | #endif | 569 | #endif |
570 | return FALSE; | 570 | return FALSE; |
571 | } | 571 | } |
572 | 572 | ||
573 | void Launcher::viewSelected(const QString& s) | 573 | void Launcher::viewSelected(const QString& s) |
574 | { | 574 | { |
575 | setCaption( s + tr(" - Launcher") ); | 575 | setCaption( s + tr(" - Launcher") ); |
576 | } | 576 | } |
577 | 577 | ||
diff --git a/core/launcher/launcherview.cpp b/core/launcher/launcherview.cpp index 513b1bd..6c7d487 100644 --- a/core/launcher/launcherview.cpp +++ b/core/launcher/launcherview.cpp | |||
@@ -522,200 +522,200 @@ void LauncherIconView::addItem(AppLnk* app, bool resort) | |||
522 | sort(); | 522 | sort(); |
523 | } | 523 | } |
524 | 524 | ||
525 | void LauncherIconView::updateCategoriesAndMimeTypes() | 525 | void LauncherIconView::updateCategoriesAndMimeTypes() |
526 | { | 526 | { |
527 | mimes.clear(); | 527 | mimes.clear(); |
528 | cats.clear(); | 528 | cats.clear(); |
529 | LauncherItem* item = (LauncherItem*)firstItem(); | 529 | LauncherItem* item = (LauncherItem*)firstItem(); |
530 | while (item) { | 530 | while (item) { |
531 | addCatsAndMimes(item->appLnk()); | 531 | addCatsAndMimes(item->appLnk()); |
532 | item = (LauncherItem*)item->nextItem(); | 532 | item = (LauncherItem*)item->nextItem(); |
533 | } | 533 | } |
534 | QListIterator<AppLnk> it(hidden); | 534 | QListIterator<AppLnk> it(hidden); |
535 | AppLnk* l; | 535 | AppLnk* l; |
536 | while ((l=it.current())) { | 536 | while ((l=it.current())) { |
537 | addCatsAndMimes(l); | 537 | addCatsAndMimes(l); |
538 | ++it; | 538 | ++it; |
539 | } | 539 | } |
540 | } | 540 | } |
541 | 541 | ||
542 | void LauncherIconView::hideOrShowItems(bool resort) | 542 | void LauncherIconView::hideOrShowItems(bool resort) |
543 | { | 543 | { |
544 | viewport()->setUpdatesEnabled( FALSE ); | 544 | viewport()->setUpdatesEnabled( FALSE ); |
545 | hidden.setAutoDelete(FALSE); | 545 | hidden.setAutoDelete(FALSE); |
546 | QList<AppLnk> links=hidden; | 546 | QList<AppLnk> links=hidden; |
547 | hidden.clear(); | 547 | hidden.clear(); |
548 | hidden.setAutoDelete(TRUE); | 548 | hidden.setAutoDelete(TRUE); |
549 | LauncherItem* item = (LauncherItem*)firstItem(); | 549 | LauncherItem* item = (LauncherItem*)firstItem(); |
550 | while (item) { | 550 | while (item) { |
551 | links.append(item->takeAppLnk()); | 551 | links.append(item->takeAppLnk()); |
552 | item = (LauncherItem*)item->nextItem(); | 552 | item = (LauncherItem*)item->nextItem(); |
553 | } | 553 | } |
554 | clear(); | 554 | clear(); |
555 | QListIterator<AppLnk> it(links); | 555 | QListIterator<AppLnk> it(links); |
556 | AppLnk* l; | 556 | AppLnk* l; |
557 | while ((l=it.current())) { | 557 | while ((l=it.current())) { |
558 | addItem(l,FALSE); | 558 | addItem(l,FALSE); |
559 | ++it; | 559 | ++it; |
560 | } | 560 | } |
561 | if ( resort && !autoArrange() ) | 561 | if ( resort && !autoArrange() ) |
562 | sort(); | 562 | sort(); |
563 | viewport()->setUpdatesEnabled( TRUE ); | 563 | viewport()->setUpdatesEnabled( TRUE ); |
564 | } | 564 | } |
565 | 565 | ||
566 | bool LauncherIconView::removeLink(const QString& linkfile) | 566 | bool LauncherIconView::removeLink(const QString& linkfile) |
567 | { | 567 | { |
568 | LauncherItem* item = (LauncherItem*)firstItem(); | 568 | LauncherItem* item = (LauncherItem*)firstItem(); |
569 | AppLnk* l; | 569 | AppLnk* l; |
570 | bool did = FALSE; | 570 | bool did = FALSE; |
571 | DocLnk dl(linkfile); | 571 | DocLnk dl(linkfile); |
572 | while (item) { | 572 | while (item) { |
573 | l = item->appLnk(); | 573 | l = item->appLnk(); |
574 | LauncherItem *nextItem = (LauncherItem *)item->nextItem(); | 574 | LauncherItem *nextItem = (LauncherItem *)item->nextItem(); |
575 | if ( l->linkFileKnown() && l->linkFile() == linkfile | 575 | if ( l->linkFileKnown() && l->linkFile() == linkfile |
576 | || l->fileKnown() && ( | 576 | || l->fileKnown() && ( |
577 | l->file() == linkfile | 577 | l->file() == linkfile |
578 | || dl.isValid() && dl.file() == l->file() ) ) { | 578 | || dl.isValid() && dl.file() == l->file() ) ) { |
579 | delete item; | 579 | delete item; |
580 | did = TRUE; | 580 | did = TRUE; |
581 | } | 581 | } |
582 | item = nextItem; | 582 | item = nextItem; |
583 | } | 583 | } |
584 | QListIterator<AppLnk> it(hidden); | 584 | QListIterator<AppLnk> it(hidden); |
585 | while ((l=it.current())) { | 585 | while ((l=it.current())) { |
586 | ++it; | 586 | ++it; |
587 | if ( l->linkFileKnown() && l->linkFile() == linkfile | 587 | if ( l->linkFileKnown() && l->linkFile() == linkfile |
588 | || l->file() == linkfile | 588 | || l->file() == linkfile |
589 | || dl.isValid() && dl.file() == l->file() ) { | 589 | || dl.isValid() && dl.file() == l->file() ) { |
590 | hidden.removeRef(l); | 590 | hidden.removeRef(l); |
591 | did = TRUE; | 591 | did = TRUE; |
592 | } | 592 | } |
593 | } | 593 | } |
594 | return did; | 594 | return did; |
595 | } | 595 | } |
596 | 596 | ||
597 | //=========================================================================== | 597 | //=========================================================================== |
598 | 598 | ||
599 | LauncherView::LauncherView( QWidget* parent, const char* name, WFlags fl ) | 599 | LauncherView::LauncherView( QWidget* parent, const char* name, WFlags fl ) |
600 | : QVBox( parent, name, fl ) | 600 | : QVBox( parent, name, fl ) |
601 | { | 601 | { |
602 | catmb = 0; | 602 | catmb = 0; |
603 | icons = new LauncherIconView( this ); | 603 | icons = new LauncherIconView( this ); |
604 | setFocusProxy(icons); | 604 | setFocusProxy(icons); |
605 | QPEApplication::setStylusOperation( icons->viewport(), QPEApplication::RightOnHold ); | 605 | QPEApplication::setStylusOperation( icons->viewport(), QPEApplication::RightOnHold ); |
606 | 606 | ||
607 | icons->setItemsMovable( FALSE ); | 607 | icons->setItemsMovable( FALSE ); |
608 | icons->setAutoArrange( TRUE ); | 608 | icons->setAutoArrange( TRUE ); |
609 | icons->setSorting( TRUE ); | 609 | icons->setSorting( TRUE ); |
610 | icons->setFrameStyle( QFrame::NoFrame ); | 610 | icons->setFrameStyle( QFrame::NoFrame ); |
611 | icons->setMargin( 0 ); | 611 | icons->setMargin( 0 ); |
612 | icons->setSelectionMode( QIconView::NoSelection ); | 612 | icons->setSelectionMode( QIconView::NoSelection ); |
613 | icons->setBackgroundMode( PaletteBase ); | 613 | icons->setBackgroundMode( PaletteBase ); |
614 | icons->setResizeMode( QIconView::Fixed ); | 614 | icons->setResizeMode( QIconView::Fixed ); |
615 | vmode = (ViewMode)-1; | 615 | vmode = (ViewMode)-1; |
616 | setViewMode( Icon ); | 616 | setViewMode( Icon ); |
617 | 617 | ||
618 | connect( icons, SIGNAL(mouseButtonClicked(int, QIconViewItem *, const QPoint&)), | 618 | connect( icons, SIGNAL(mouseButtonClicked(int,QIconViewItem*,const QPoint&)), |
619 | SLOT(itemClicked(int, QIconViewItem *)) ); | 619 | SLOT(itemClicked(int,QIconViewItem*)) ); |
620 | connect( icons, SIGNAL(selectionChanged()), | 620 | connect( icons, SIGNAL(selectionChanged()), |
621 | SLOT(selectionChanged()) ); | 621 | SLOT(selectionChanged()) ); |
622 | connect( icons, SIGNAL(returnPressed(QIconViewItem *)), | 622 | connect( icons, SIGNAL(returnPressed(QIconViewItem*)), |
623 | SLOT(returnPressed(QIconViewItem *)) ); | 623 | SLOT(returnPressed(QIconViewItem*)) ); |
624 | connect( icons, SIGNAL(mouseButtonPressed(int, QIconViewItem *, const QPoint&)), | 624 | connect( icons, SIGNAL(mouseButtonPressed(int,QIconViewItem*,const QPoint&)), |
625 | SLOT(itemPressed(int, QIconViewItem *)) ); | 625 | SLOT(itemPressed(int,QIconViewItem*)) ); |
626 | 626 | ||
627 | tools = 0; | 627 | tools = 0; |
628 | setBackgroundType( Ruled, QString::null ); | 628 | setBackgroundType( Ruled, QString::null ); |
629 | } | 629 | } |
630 | 630 | ||
631 | LauncherView::~LauncherView() | 631 | LauncherView::~LauncherView() |
632 | { | 632 | { |
633 | if ( bgCache && bgCache->contains( bgName ) ) | 633 | if ( bgCache && bgCache->contains( bgName ) ) |
634 | (*bgCache)[bgName]->ref--; | 634 | (*bgCache)[bgName]->ref--; |
635 | } | 635 | } |
636 | 636 | ||
637 | void LauncherView::hideIcons() | 637 | void LauncherView::hideIcons() |
638 | { | 638 | { |
639 | icons->hide(); | 639 | icons->hide(); |
640 | } | 640 | } |
641 | 641 | ||
642 | void LauncherView::setToolsEnabled(bool y) | 642 | void LauncherView::setToolsEnabled(bool y) |
643 | { | 643 | { |
644 | if ( !y != !tools ) { | 644 | if ( !y != !tools ) { |
645 | if ( y ) { | 645 | if ( y ) { |
646 | tools = new QHBox(this); | 646 | tools = new QHBox(this); |
647 | 647 | ||
648 | // Type filter | 648 | // Type filter |
649 | typemb = new QComboBox(tools); | 649 | typemb = new QComboBox(tools); |
650 | QSizePolicy p = typemb->sizePolicy(); | 650 | QSizePolicy p = typemb->sizePolicy(); |
651 | p.setHorData(QSizePolicy::Expanding); | 651 | p.setHorData(QSizePolicy::Expanding); |
652 | typemb->setSizePolicy(p); | 652 | typemb->setSizePolicy(p); |
653 | 653 | ||
654 | // Category filter | 654 | // Category filter |
655 | updateTools(); | 655 | updateTools(); |
656 | tools->show(); | 656 | tools->show(); |
657 | 657 | ||
658 | // Always show vscrollbar | 658 | // Always show vscrollbar |
659 | icons->setVScrollBarMode( QScrollView::AlwaysOn ); | 659 | icons->setVScrollBarMode( QScrollView::AlwaysOn ); |
660 | } else { | 660 | } else { |
661 | delete tools; | 661 | delete tools; |
662 | tools = 0; | 662 | tools = 0; |
663 | } | 663 | } |
664 | } | 664 | } |
665 | } | 665 | } |
666 | 666 | ||
667 | void LauncherView::updateTools() | 667 | void LauncherView::updateTools() |
668 | { | 668 | { |
669 | disconnect( typemb, SIGNAL(activated(int)), | 669 | disconnect( typemb, SIGNAL(activated(int)), |
670 | this, SLOT(showType(int)) ); | 670 | this, SLOT(showType(int)) ); |
671 | if ( catmb ) disconnect( catmb, SIGNAL(signalSelected(int)), | 671 | if ( catmb ) disconnect( catmb, SIGNAL(signalSelected(int)), |
672 | this, SLOT(showCategory(int)) ); | 672 | this, SLOT(showCategory(int)) ); |
673 | 673 | ||
674 | // ### I want to remove this | 674 | // ### I want to remove this |
675 | icons->updateCategoriesAndMimeTypes(); | 675 | icons->updateCategoriesAndMimeTypes(); |
676 | 676 | ||
677 | QString prev; | 677 | QString prev; |
678 | 678 | ||
679 | // Type filter | 679 | // Type filter |
680 | QStringList types; | 680 | QStringList types; |
681 | typelist = icons->mimeTypes(); | 681 | typelist = icons->mimeTypes(); |
682 | for (QStringList::ConstIterator it = typelist.begin(); it!=typelist.end(); ++it) { | 682 | for (QStringList::ConstIterator it = typelist.begin(); it!=typelist.end(); ++it) { |
683 | QString t = *it; | 683 | QString t = *it; |
684 | if ( t.left(12) == "application/" ) { | 684 | if ( t.left(12) == "application/" ) { |
685 | MimeType mt(t); | 685 | MimeType mt(t); |
686 | const AppLnk* app = mt.application(); | 686 | const AppLnk* app = mt.application(); |
687 | if ( app ) | 687 | if ( app ) |
688 | t = app->name(); | 688 | t = app->name(); |
689 | else | 689 | else |
690 | t = t.mid(12); | 690 | t = t.mid(12); |
691 | } else { | 691 | } else { |
692 | t[0] = t[0].upper(); | 692 | t[0] = t[0].upper(); |
693 | } | 693 | } |
694 | types += t; | 694 | types += t; |
695 | } | 695 | } |
696 | types << tr("All types"); | 696 | types << tr("All types"); |
697 | prev = typemb->currentText(); | 697 | prev = typemb->currentText(); |
698 | typemb->clear(); | 698 | typemb->clear(); |
699 | typemb->insertStringList(types); | 699 | typemb->insertStringList(types); |
700 | for (int i=0; i<typemb->count(); i++) { | 700 | for (int i=0; i<typemb->count(); i++) { |
701 | if ( typemb->text(i) == prev ) { | 701 | if ( typemb->text(i) == prev ) { |
702 | typemb->setCurrentItem(i); | 702 | typemb->setCurrentItem(i); |
703 | break; | 703 | break; |
704 | } | 704 | } |
705 | } | 705 | } |
706 | if ( prev.isNull() ) | 706 | if ( prev.isNull() ) |
707 | typemb->setCurrentItem(typemb->count()-1); | 707 | typemb->setCurrentItem(typemb->count()-1); |
708 | 708 | ||
709 | int pcat = catmb ? catmb->currentCategory() : -2; | 709 | int pcat = catmb ? catmb->currentCategory() : -2; |
710 | if ( !catmb ) | 710 | if ( !catmb ) |
711 | catmb = new CategorySelect(tools); | 711 | catmb = new CategorySelect(tools); |
712 | Categories cats( 0 ); | 712 | Categories cats( 0 ); |
713 | cats.load( categoryFileName() ); | 713 | cats.load( categoryFileName() ); |
714 | QArray<int> vl( 0 ); | 714 | QArray<int> vl( 0 ); |
715 | catmb->setCategories( vl, "Document View", // No tr | 715 | catmb->setCategories( vl, "Document View", // No tr |
716 | tr("Document View") ); | 716 | tr("Document View") ); |
717 | catmb->setRemoveCategoryEdit( TRUE ); | 717 | catmb->setRemoveCategoryEdit( TRUE ); |
718 | catmb->setAllCategories( TRUE ); | 718 | catmb->setAllCategories( TRUE ); |
719 | catmb->setCurrentCategory(pcat); | 719 | catmb->setCurrentCategory(pcat); |
720 | 720 | ||
721 | // if type has changed we need to redisplay | 721 | // if type has changed we need to redisplay |
diff --git a/core/launcher/packageslave.cpp b/core/launcher/packageslave.cpp index 321b5dd..7e61b0e 100644 --- a/core/launcher/packageslave.cpp +++ b/core/launcher/packageslave.cpp | |||
@@ -1,152 +1,152 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "packageslave.h" | 21 | #include "packageslave.h" |
22 | #include <qtopia/qprocess.h> | 22 | #include <qtopia/qprocess.h> |
23 | 23 | ||
24 | #ifdef Q_WS_QWS | 24 | #ifdef Q_WS_QWS |
25 | #include <qtopia/qcopenvelope_qws.h> | 25 | #include <qtopia/qcopenvelope_qws.h> |
26 | #endif | 26 | #endif |
27 | 27 | ||
28 | #ifdef Q_WS_QWS | 28 | #ifdef Q_WS_QWS |
29 | #include <qcopchannel_qws.h> | 29 | #include <qcopchannel_qws.h> |
30 | #endif | 30 | #endif |
31 | 31 | ||
32 | #include <qtextstream.h> | 32 | #include <qtextstream.h> |
33 | 33 | ||
34 | #include <stdlib.h> | 34 | #include <stdlib.h> |
35 | #include <sys/stat.h> // mkdir() | 35 | #include <sys/stat.h> // mkdir() |
36 | 36 | ||
37 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) | 37 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) |
38 | #include <unistd.h> | 38 | #include <unistd.h> |
39 | #include <sys/vfs.h> | 39 | #include <sys/vfs.h> |
40 | #include <mntent.h> | 40 | #include <mntent.h> |
41 | #elif defined(Q_OS_WIN32) | 41 | #elif defined(Q_OS_WIN32) |
42 | #include <windows.h> | 42 | #include <windows.h> |
43 | #include <winbase.h> | 43 | #include <winbase.h> |
44 | #elif defined(Q_OS_MACX) | 44 | #elif defined(Q_OS_MACX) |
45 | #include <unistd.h> | 45 | #include <unistd.h> |
46 | #endif | 46 | #endif |
47 | 47 | ||
48 | 48 | ||
49 | PackageHandler::PackageHandler( QObject *parent, char* name ) | 49 | PackageHandler::PackageHandler( QObject *parent, char* name ) |
50 | : QObject( parent, name ), packageChannel( 0 ), currentProcess( 0 ), mNoSpaceLeft( FALSE ) | 50 | : QObject( parent, name ), packageChannel( 0 ), currentProcess( 0 ), mNoSpaceLeft( FALSE ) |
51 | { | 51 | { |
52 | // setup qcop channel | 52 | // setup qcop channel |
53 | #ifndef QT_NO_COP | 53 | #ifndef QT_NO_COP |
54 | packageChannel = new QCopChannel( "QPE/Package", this ); | 54 | packageChannel = new QCopChannel( "QPE/Package", this ); |
55 | connect( packageChannel, SIGNAL( received(const QCString &, const QByteArray &) ), | 55 | connect( packageChannel, SIGNAL( received(const QCString&,const QByteArray&) ), |
56 | this, SLOT( qcopMessage( const QCString &, const QByteArray &) ) ); | 56 | this, SLOT( qcopMessage(const QCString&,const QByteArray&) ) ); |
57 | #endif | 57 | #endif |
58 | } | 58 | } |
59 | 59 | ||
60 | void PackageHandler::qcopMessage( const QCString &msg, const QByteArray &data ) | 60 | void PackageHandler::qcopMessage( const QCString &msg, const QByteArray &data ) |
61 | { | 61 | { |
62 | QDataStream stream( data, IO_ReadOnly ); | 62 | QDataStream stream( data, IO_ReadOnly ); |
63 | 63 | ||
64 | if ( msg == "installPackage(QString)" ) { | 64 | if ( msg == "installPackage(QString)" ) { |
65 | QString file; | 65 | QString file; |
66 | stream >> file; | 66 | stream >> file; |
67 | installPackage( file ); | 67 | installPackage( file ); |
68 | } else if ( msg == "removePackage(QString)" ) { | 68 | } else if ( msg == "removePackage(QString)" ) { |
69 | QString file; | 69 | QString file; |
70 | stream >> file; | 70 | stream >> file; |
71 | removePackage( file ); | 71 | removePackage( file ); |
72 | } else if ( msg == "addPackageFiles(QString,QString)" ) { | 72 | } else if ( msg == "addPackageFiles(QString,QString)" ) { |
73 | QString location, listfile; | 73 | QString location, listfile; |
74 | stream >> location >> listfile; | 74 | stream >> location >> listfile; |
75 | addPackageFiles( location, listfile); | 75 | addPackageFiles( location, listfile); |
76 | } else if ( msg == "addPackages(QString)" ) { | 76 | } else if ( msg == "addPackages(QString)" ) { |
77 | QString location; | 77 | QString location; |
78 | stream >> location; | 78 | stream >> location; |
79 | addPackages( location ); | 79 | addPackages( location ); |
80 | } else if ( msg == "cleanupPackageFiles(QString)" ) { | 80 | } else if ( msg == "cleanupPackageFiles(QString)" ) { |
81 | QString listfile; | 81 | QString listfile; |
82 | stream >> listfile; | 82 | stream >> listfile; |
83 | cleanupPackageFiles( listfile ); | 83 | cleanupPackageFiles( listfile ); |
84 | } else if ( msg == "cleanupPackages(QString)" ) { | 84 | } else if ( msg == "cleanupPackages(QString)" ) { |
85 | QString location; | 85 | QString location; |
86 | stream >> location; | 86 | stream >> location; |
87 | cleanupPackages( location ); | 87 | cleanupPackages( location ); |
88 | } else if ( msg == "prepareInstall(QString,QString)" ) { | 88 | } else if ( msg == "prepareInstall(QString,QString)" ) { |
89 | QString size, path; | 89 | QString size, path; |
90 | stream >> size; | 90 | stream >> size; |
91 | stream >> path; | 91 | stream >> path; |
92 | prepareInstall( size, path ); | 92 | prepareInstall( size, path ); |
93 | } | 93 | } |
94 | } | 94 | } |
95 | 95 | ||
96 | void PackageHandler::installPackage( const QString &package ) | 96 | void PackageHandler::installPackage( const QString &package ) |
97 | { | 97 | { |
98 | if ( mNoSpaceLeft ) { | 98 | if ( mNoSpaceLeft ) { |
99 | mNoSpaceLeft = FALSE; | 99 | mNoSpaceLeft = FALSE; |
100 | // Don't emit that for now, I still couldn't test it (Wener) | 100 | // Don't emit that for now, I still couldn't test it (Wener) |
101 | //sendReply( "installFailed(QString)", package ); | 101 | //sendReply( "installFailed(QString)", package ); |
102 | //return; | 102 | //return; |
103 | } | 103 | } |
104 | 104 | ||
105 | currentProcess = new QProcess( QStringList() << "ipkg" << "install" << package ); // No tr | 105 | currentProcess = new QProcess( QStringList() << "ipkg" << "install" << package ); // No tr |
106 | connect( currentProcess, SIGNAL( processExited() ), SLOT( iProcessExited() ) ); | 106 | connect( currentProcess, SIGNAL( processExited() ), SLOT( iProcessExited() ) ); |
107 | connect( currentProcess, SIGNAL( readyReadStdout() ), SLOT( readyReadStdout() ) ); | 107 | connect( currentProcess, SIGNAL( readyReadStdout() ), SLOT( readyReadStdout() ) ); |
108 | connect( currentProcess, SIGNAL( readyReadStderr() ), SLOT( readyReadStderr() ) ); | 108 | connect( currentProcess, SIGNAL( readyReadStderr() ), SLOT( readyReadStderr() ) ); |
109 | currentPackage = package; | 109 | currentPackage = package; |
110 | 110 | ||
111 | currentProcessError=""; | 111 | currentProcessError=""; |
112 | sendReply( "installStarted(QString)", package ); | 112 | sendReply( "installStarted(QString)", package ); |
113 | currentProcess->start(); | 113 | currentProcess->start(); |
114 | } | 114 | } |
115 | 115 | ||
116 | void PackageHandler::removePackage( const QString &package ) | 116 | void PackageHandler::removePackage( const QString &package ) |
117 | { | 117 | { |
118 | currentProcess = new QProcess( QStringList() << "ipkg" << "remove" << package ); // No tr | 118 | currentProcess = new QProcess( QStringList() << "ipkg" << "remove" << package ); // No tr |
119 | connect( currentProcess, SIGNAL( processExited() ), SLOT( rmProcessExited() ) ); | 119 | connect( currentProcess, SIGNAL( processExited() ), SLOT( rmProcessExited() ) ); |
120 | connect( currentProcess, SIGNAL( readyReadStdout() ), SLOT( readyReadStdout() ) ); | 120 | connect( currentProcess, SIGNAL( readyReadStdout() ), SLOT( readyReadStdout() ) ); |
121 | connect( currentProcess, SIGNAL( readyReadStderr() ), SLOT( readyReadStderr() ) ); | 121 | connect( currentProcess, SIGNAL( readyReadStderr() ), SLOT( readyReadStderr() ) ); |
122 | currentPackage = package; | 122 | currentPackage = package; |
123 | 123 | ||
124 | currentProcessError=""; | 124 | currentProcessError=""; |
125 | sendReply( "removeStarted(QString)", package ); | 125 | sendReply( "removeStarted(QString)", package ); |
126 | currentProcess->start(); | 126 | currentProcess->start(); |
127 | } | 127 | } |
128 | 128 | ||
129 | void PackageHandler::sendReply( const QCString& msg, const QString& arg ) | 129 | void PackageHandler::sendReply( const QCString& msg, const QString& arg ) |
130 | { | 130 | { |
131 | #ifndef QT_NO_COP | 131 | #ifndef QT_NO_COP |
132 | QCopEnvelope e( "QPE/Desktop", msg ); | 132 | QCopEnvelope e( "QPE/Desktop", msg ); |
133 | e << arg; | 133 | e << arg; |
134 | #endif | 134 | #endif |
135 | } | 135 | } |
136 | 136 | ||
137 | void PackageHandler::addPackageFiles( const QString &location, | 137 | void PackageHandler::addPackageFiles( const QString &location, |
138 | const QString &listfile ) | 138 | const QString &listfile ) |
139 | { | 139 | { |
140 | QFile f(listfile); | 140 | QFile f(listfile); |
141 | #ifndef Q_OS_WIN32 | 141 | #ifndef Q_OS_WIN32 |
142 | //make a copy so we can remove the symlinks later | 142 | //make a copy so we can remove the symlinks later |
143 | mkdir( ("/usr/lib/ipkg/info/"+location).ascii(), 0777 ); | 143 | mkdir( ("/usr/lib/ipkg/info/"+location).ascii(), 0777 ); |
144 | system(("cp " + f.name() + " /usr/lib/ipkg/info/"+location).ascii()); | 144 | system(("cp " + f.name() + " /usr/lib/ipkg/info/"+location).ascii()); |
145 | #else | 145 | #else |
146 | QDir d; | 146 | QDir d; |
147 | //#### revise | 147 | //#### revise |
148 | qDebug("Copy file at %s: %s", __FILE__, __LINE__ ); | 148 | qDebug("Copy file at %s: %s", __FILE__, __LINE__ ); |
149 | d.mkdir(("/usr/lib/ipkg/info/" + location).ascii()); | 149 | d.mkdir(("/usr/lib/ipkg/info/" + location).ascii()); |
150 | system(("copy " + f.name() + " /usr/lib/ipkg/info/"+location).ascii()); | 150 | system(("copy " + f.name() + " /usr/lib/ipkg/info/"+location).ascii()); |
151 | #endif | 151 | #endif |
152 | 152 | ||
diff --git a/core/launcher/qcopbridge.cpp b/core/launcher/qcopbridge.cpp index 24f471d..53efba4 100644 --- a/core/launcher/qcopbridge.cpp +++ b/core/launcher/qcopbridge.cpp | |||
@@ -1,202 +1,202 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "qcopbridge.h" | 21 | #include "qcopbridge.h" |
22 | #include "transferserver.h" | 22 | #include "transferserver.h" |
23 | 23 | ||
24 | #include <opie2/oglobal.h> | 24 | #include <opie2/oglobal.h> |
25 | 25 | ||
26 | #ifdef Q_WS_QWS | 26 | #ifdef Q_WS_QWS |
27 | #include <qtopia/qcopenvelope_qws.h> | 27 | #include <qtopia/qcopenvelope_qws.h> |
28 | #endif | 28 | #endif |
29 | #include <qtopia/qpeapplication.h> | 29 | #include <qtopia/qpeapplication.h> |
30 | 30 | ||
31 | #include <qtopia/version.h> | 31 | #include <qtopia/version.h> |
32 | 32 | ||
33 | #include <qtextstream.h> | 33 | #include <qtextstream.h> |
34 | #include <qtimer.h> | 34 | #include <qtimer.h> |
35 | #ifdef Q_WS_QWS | 35 | #ifdef Q_WS_QWS |
36 | #include <qcopchannel_qws.h> | 36 | #include <qcopchannel_qws.h> |
37 | #endif | 37 | #endif |
38 | 38 | ||
39 | #ifndef _XOPEN_SOURCE | 39 | #ifndef _XOPEN_SOURCE |
40 | #define _XOPEN_SOURCE | 40 | #define _XOPEN_SOURCE |
41 | #endif | 41 | #endif |
42 | #ifndef Q_OS_WIN32 | 42 | #ifndef Q_OS_WIN32 |
43 | #include <pwd.h> | 43 | #include <pwd.h> |
44 | #include <unistd.h> | 44 | #include <unistd.h> |
45 | #include <sys/types.h> | 45 | #include <sys/types.h> |
46 | #endif | 46 | #endif |
47 | 47 | ||
48 | #if defined(_OS_LINUX_) | 48 | #if defined(_OS_LINUX_) |
49 | #include <shadow.h> | 49 | #include <shadow.h> |
50 | #endif | 50 | #endif |
51 | 51 | ||
52 | 52 | ||
53 | //#define INSECURE | 53 | //#define INSECURE |
54 | 54 | ||
55 | const int block_size = 51200; | 55 | const int block_size = 51200; |
56 | 56 | ||
57 | QCopBridge::QCopBridge( Q_UINT16 port, QObject *parent, | 57 | QCopBridge::QCopBridge( Q_UINT16 port, QObject *parent, |
58 | const char* name ) | 58 | const char* name ) |
59 | : QServerSocket( port, 1, parent, name ), | 59 | : QServerSocket( port, 1, parent, name ), |
60 | desktopChannel( 0 ), | 60 | desktopChannel( 0 ), |
61 | cardChannel( 0 ) | 61 | cardChannel( 0 ) |
62 | { | 62 | { |
63 | if ( !ok() ) | 63 | if ( !ok() ) |
64 | qWarning( "Failed to bind to port %d", port ); | 64 | qWarning( "Failed to bind to port %d", port ); |
65 | else { | 65 | else { |
66 | #ifndef QT_NO_COP | 66 | #ifndef QT_NO_COP |
67 | desktopChannel = new QCopChannel( "QPE/Desktop", this ); | 67 | desktopChannel = new QCopChannel( "QPE/Desktop", this ); |
68 | connect( desktopChannel, SIGNAL(received(const QCString &, const QByteArray &)), | 68 | connect( desktopChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
69 | this, SLOT(desktopMessage( const QCString &, const QByteArray &)) ); | 69 | this, SLOT(desktopMessage(const QCString&,const QByteArray&)) ); |
70 | cardChannel = new QCopChannel( "QPE/Card", this ); | 70 | cardChannel = new QCopChannel( "QPE/Card", this ); |
71 | connect( cardChannel, SIGNAL(received(const QCString &, const QByteArray &)), | 71 | connect( cardChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
72 | this, SLOT(desktopMessage( const QCString &, const QByteArray &)) ); | 72 | this, SLOT(desktopMessage(const QCString&,const QByteArray&)) ); |
73 | #endif | 73 | #endif |
74 | } | 74 | } |
75 | sendSync = FALSE; | 75 | sendSync = FALSE; |
76 | openConnections.setAutoDelete( TRUE ); | 76 | openConnections.setAutoDelete( TRUE ); |
77 | authorizeConnections(); | 77 | authorizeConnections(); |
78 | } | 78 | } |
79 | 79 | ||
80 | QCopBridge::~QCopBridge() | 80 | QCopBridge::~QCopBridge() |
81 | { | 81 | { |
82 | #ifndef QT_NO_COP | 82 | #ifndef QT_NO_COP |
83 | delete desktopChannel; | 83 | delete desktopChannel; |
84 | #endif | 84 | #endif |
85 | } | 85 | } |
86 | 86 | ||
87 | void QCopBridge::authorizeConnections() | 87 | void QCopBridge::authorizeConnections() |
88 | { | 88 | { |
89 | Config cfg("Security"); | 89 | Config cfg("Security"); |
90 | cfg.setGroup("SyncMode"); | 90 | cfg.setGroup("SyncMode"); |
91 | m_mode = Mode(cfg.readNumEntry("Mode", Sharp )); | 91 | m_mode = Mode(cfg.readNumEntry("Mode", Sharp )); |
92 | QListIterator<QCopBridgePI> it(openConnections); | 92 | QListIterator<QCopBridgePI> it(openConnections); |
93 | while ( it.current() ) { | 93 | while ( it.current() ) { |
94 | if ( !it.current()->verifyAuthorised() ) { | 94 | if ( !it.current()->verifyAuthorised() ) { |
95 | disconnect ( it.current(), SIGNAL( connectionClosed( QCopBridgePI *) ), this, SLOT( closed( QCopBridgePI *) ) ); | 95 | disconnect ( it.current(), SIGNAL( connectionClosed(QCopBridgePI*) ), this, SLOT( closed(QCopBridgePI*) ) ); |
96 | openConnections.removeRef( it.current() ); | 96 | openConnections.removeRef( it.current() ); |
97 | } else | 97 | } else |
98 | ++it; | 98 | ++it; |
99 | } | 99 | } |
100 | } | 100 | } |
101 | 101 | ||
102 | void QCopBridge::newConnection( int socket ) | 102 | void QCopBridge::newConnection( int socket ) |
103 | { | 103 | { |
104 | QCopBridgePI *pi = new QCopBridgePI( socket, this ); | 104 | QCopBridgePI *pi = new QCopBridgePI( socket, this ); |
105 | openConnections.append( pi ); | 105 | openConnections.append( pi ); |
106 | connect ( pi, SIGNAL( connectionClosed( QCopBridgePI *) ), this, SLOT( closed( QCopBridgePI *) ) ); | 106 | connect ( pi, SIGNAL( connectionClosed(QCopBridgePI*) ), this, SLOT( closed(QCopBridgePI*) ) ); |
107 | 107 | ||
108 | /* ### libqtopia merge FIXME */ | 108 | /* ### libqtopia merge FIXME */ |
109 | #if 0 | 109 | #if 0 |
110 | QPEApplication::setTempScreenSaverMode( QPEApplication::DisableSuspend ); | 110 | QPEApplication::setTempScreenSaverMode( QPEApplication::DisableSuspend ); |
111 | #endif | 111 | #endif |
112 | #ifndef QT_NO_COP | 112 | #ifndef QT_NO_COP |
113 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; | 113 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; |
114 | #endif | 114 | #endif |
115 | 115 | ||
116 | if ( sendSync ) { | 116 | if ( sendSync ) { |
117 | pi ->startSync(); | 117 | pi ->startSync(); |
118 | sendSync = FALSE; | 118 | sendSync = FALSE; |
119 | } | 119 | } |
120 | } | 120 | } |
121 | 121 | ||
122 | void QCopBridge::closed( QCopBridgePI *pi ) | 122 | void QCopBridge::closed( QCopBridgePI *pi ) |
123 | { | 123 | { |
124 | emit connectionClosed( pi->peerAddress() ); | 124 | emit connectionClosed( pi->peerAddress() ); |
125 | openConnections.removeRef( pi ); | 125 | openConnections.removeRef( pi ); |
126 | if ( openConnections.count() == 0 ) { | 126 | if ( openConnections.count() == 0 ) { |
127 | /* ### FIXME libqtopia merge */ | 127 | /* ### FIXME libqtopia merge */ |
128 | #if 0 | 128 | #if 0 |
129 | QPEApplication::setTempScreenSaverMode( QPEApplication::Enable ); | 129 | QPEApplication::setTempScreenSaverMode( QPEApplication::Enable ); |
130 | #endif | 130 | #endif |
131 | #ifndef QT_NO_COP | 131 | #ifndef QT_NO_COP |
132 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 132 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
133 | #endif | 133 | #endif |
134 | } | 134 | } |
135 | } | 135 | } |
136 | 136 | ||
137 | void QCopBridge::closeOpenConnections() | 137 | void QCopBridge::closeOpenConnections() |
138 | { | 138 | { |
139 | QCopBridgePI *pi; | 139 | QCopBridgePI *pi; |
140 | for ( pi = openConnections.first(); pi != 0; pi = openConnections.next() ) | 140 | for ( pi = openConnections.first(); pi != 0; pi = openConnections.next() ) |
141 | pi->close(); | 141 | pi->close(); |
142 | } | 142 | } |
143 | 143 | ||
144 | 144 | ||
145 | void QCopBridge::desktopMessage( const QCString &command, const QByteArray &data ) | 145 | void QCopBridge::desktopMessage( const QCString &command, const QByteArray &data ) |
146 | { | 146 | { |
147 | if ( command == "startSync()" ) { | 147 | if ( command == "startSync()" ) { |
148 | // we need to buffer it a bit | 148 | // we need to buffer it a bit |
149 | sendSync = TRUE; | 149 | sendSync = TRUE; |
150 | startTimer( 20000 ); | 150 | startTimer( 20000 ); |
151 | } | 151 | } |
152 | 152 | ||
153 | if ( m_mode & Qtopia1_7 ) { | 153 | if ( m_mode & Qtopia1_7 ) { |
154 | // send the command to all open connections | 154 | // send the command to all open connections |
155 | QCopBridgePI *pi; | 155 | QCopBridgePI *pi; |
156 | for ( pi = openConnections.first(); pi != 0; pi = openConnections.next() ) { | 156 | for ( pi = openConnections.first(); pi != 0; pi = openConnections.next() ) { |
157 | pi->sendDesktopMessage( command, data ); | 157 | pi->sendDesktopMessage( command, data ); |
158 | } | 158 | } |
159 | } | 159 | } |
160 | if ( ( m_mode & Sharp ) || (m_mode & IntelliSync) ) | 160 | if ( ( m_mode & Sharp ) || (m_mode & IntelliSync) ) |
161 | sendDesktopMessageOld( command, data ); | 161 | sendDesktopMessageOld( command, data ); |
162 | } | 162 | } |
163 | 163 | ||
164 | #ifndef OPIE_NO_OLD_SYNC_CODE | 164 | #ifndef OPIE_NO_OLD_SYNC_CODE |
165 | /* | 165 | /* |
166 | * Old compat mode | 166 | * Old compat mode |
167 | */ | 167 | */ |
168 | void QCopBridge::sendDesktopMessageOld( const QCString& command, const QByteArray& args) { | 168 | void QCopBridge::sendDesktopMessageOld( const QCString& command, const QByteArray& args) { |
169 | command.stripWhiteSpace(); | 169 | command.stripWhiteSpace(); |
170 | 170 | ||
171 | int paren = command.find( "(" ); | 171 | int paren = command.find( "(" ); |
172 | if ( paren <= 0 ) { | 172 | if ( paren <= 0 ) { |
173 | qDebug("DesktopMessage: bad qcop syntax"); | 173 | qDebug("DesktopMessage: bad qcop syntax"); |
174 | return; | 174 | return; |
175 | } | 175 | } |
176 | 176 | ||
177 | QString params = command.mid( paren + 1 ); | 177 | QString params = command.mid( paren + 1 ); |
178 | if ( params[params.length()-1] != ')' ) { | 178 | if ( params[params.length()-1] != ')' ) { |
179 | qDebug("DesktopMessage: bad qcop syntax"); | 179 | qDebug("DesktopMessage: bad qcop syntax"); |
180 | return; | 180 | return; |
181 | } | 181 | } |
182 | 182 | ||
183 | params.truncate( params.length()-1 ); | 183 | params.truncate( params.length()-1 ); |
184 | 184 | ||
185 | QStringList paramList = QStringList::split( ",", params ); | 185 | QStringList paramList = QStringList::split( ",", params ); |
186 | QString data; | 186 | QString data; |
187 | if ( paramList.count() ) { | 187 | if ( paramList.count() ) { |
188 | QDataStream stream( args, IO_ReadOnly ); | 188 | QDataStream stream( args, IO_ReadOnly ); |
189 | for ( QStringList::Iterator it = paramList.begin(); it != paramList.end(); ++it ) { | 189 | for ( QStringList::Iterator it = paramList.begin(); it != paramList.end(); ++it ) { |
190 | QString str; | 190 | QString str; |
191 | if ( *it == "QString" ) { | 191 | if ( *it == "QString" ) { |
192 | stream >> str; | 192 | stream >> str; |
193 | } else if ( *it == "QCString" ) { | 193 | } else if ( *it == "QCString" ) { |
194 | QCString cstr; | 194 | QCString cstr; |
195 | stream >> cstr; | 195 | stream >> cstr; |
196 | str = QString::fromLocal8Bit( cstr ); | 196 | str = QString::fromLocal8Bit( cstr ); |
197 | } else if ( *it == "int" ) { | 197 | } else if ( *it == "int" ) { |
198 | int i; | 198 | int i; |
199 | stream >> i; | 199 | stream >> i; |
200 | str = QString::number( i ); | 200 | str = QString::number( i ); |
201 | } else if ( *it == "bool" ) { | 201 | } else if ( *it == "bool" ) { |
202 | int i; | 202 | int i; |
diff --git a/core/launcher/runningappbar.cpp b/core/launcher/runningappbar.cpp index 11d10dc..2e9d2a9 100644 --- a/core/launcher/runningappbar.cpp +++ b/core/launcher/runningappbar.cpp | |||
@@ -1,134 +1,134 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | ***********************************************************************/ | 19 | ***********************************************************************/ |
20 | 20 | ||
21 | #define QTOPIA_INTERNAL_PRELOADACCESS | 21 | #define QTOPIA_INTERNAL_PRELOADACCESS |
22 | 22 | ||
23 | 23 | ||
24 | #include <stdlib.h> | 24 | #include <stdlib.h> |
25 | 25 | ||
26 | #include <qpainter.h> | 26 | #include <qpainter.h> |
27 | 27 | ||
28 | #include <qtopia/qcopenvelope_qws.h> | 28 | #include <qtopia/qcopenvelope_qws.h> |
29 | 29 | ||
30 | #include "runningappbar.h" | 30 | #include "runningappbar.h" |
31 | #include "serverinterface.h" | 31 | #include "serverinterface.h" |
32 | 32 | ||
33 | RunningAppBar::RunningAppBar(QWidget* parent) | 33 | RunningAppBar::RunningAppBar(QWidget* parent) |
34 | : QFrame(parent), selectedAppIndex(-1) | 34 | : QFrame(parent), selectedAppIndex(-1) |
35 | { | 35 | { |
36 | QCopChannel* channel = new QCopChannel( "QPE/System", this ); | 36 | QCopChannel* channel = new QCopChannel( "QPE/System", this ); |
37 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), | 37 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
38 | this, SLOT(received(const QCString&, const QByteArray&)) ); | 38 | this, SLOT(received(const QCString&,const QByteArray&)) ); |
39 | 39 | ||
40 | spacing = AppLnk::smallIconSize()+3; | 40 | spacing = AppLnk::smallIconSize()+3; |
41 | } | 41 | } |
42 | 42 | ||
43 | RunningAppBar::~RunningAppBar() | 43 | RunningAppBar::~RunningAppBar() |
44 | { | 44 | { |
45 | } | 45 | } |
46 | 46 | ||
47 | void RunningAppBar::received(const QCString& msg, const QByteArray& data) { | 47 | void RunningAppBar::received(const QCString& msg, const QByteArray& data) { |
48 | // Since fast apps appear and disappear without disconnecting from their | 48 | // Since fast apps appear and disappear without disconnecting from their |
49 | // channel we need to watch for the showing/hiding events and update according. | 49 | // channel we need to watch for the showing/hiding events and update according. |
50 | QDataStream stream( data, IO_ReadOnly ); | 50 | QDataStream stream( data, IO_ReadOnly ); |
51 | if ( msg == "fastAppShowing(QString)") { | 51 | if ( msg == "fastAppShowing(QString)") { |
52 | QString appName; | 52 | QString appName; |
53 | stream >> appName; | 53 | stream >> appName; |
54 | // qDebug("fastAppShowing %s", appName.data() ); | 54 | // qDebug("fastAppShowing %s", appName.data() ); |
55 | const AppLnk* f = ServerInterface::appLnks().findExec(appName); | 55 | const AppLnk* f = ServerInterface::appLnks().findExec(appName); |
56 | if ( f ) addTask(*f); | 56 | if ( f ) addTask(*f); |
57 | } else if ( msg == "fastAppHiding(QString)") { | 57 | } else if ( msg == "fastAppHiding(QString)") { |
58 | QString appName; | 58 | QString appName; |
59 | stream >> appName; | 59 | stream >> appName; |
60 | const AppLnk* f = ServerInterface::appLnks().findExec(appName); | 60 | const AppLnk* f = ServerInterface::appLnks().findExec(appName); |
61 | if ( f ) removeTask(*f); | 61 | if ( f ) removeTask(*f); |
62 | } | 62 | } |
63 | } | 63 | } |
64 | 64 | ||
65 | void RunningAppBar::addTask(const AppLnk& appLnk) { | 65 | void RunningAppBar::addTask(const AppLnk& appLnk) { |
66 | qDebug("Added %s to app list.", appLnk.name().latin1()); | 66 | qDebug("Added %s to app list.", appLnk.name().latin1()); |
67 | AppLnk* newApp = new AppLnk(appLnk); | 67 | AppLnk* newApp = new AppLnk(appLnk); |
68 | newApp->setExec(appLnk.exec()); | 68 | newApp->setExec(appLnk.exec()); |
69 | appList.prepend(newApp); | 69 | appList.prepend(newApp); |
70 | update(); | 70 | update(); |
71 | } | 71 | } |
72 | 72 | ||
73 | void RunningAppBar::removeTask(const AppLnk& appLnk) { | 73 | void RunningAppBar::removeTask(const AppLnk& appLnk) { |
74 | unsigned int i = 0; | 74 | unsigned int i = 0; |
75 | for (; i < appList.count() ; i++) { | 75 | for (; i < appList.count() ; i++) { |
76 | AppLnk* target = appList.at(i); | 76 | AppLnk* target = appList.at(i); |
77 | if (target->exec() == appLnk.exec()) { | 77 | if (target->exec() == appLnk.exec()) { |
78 | qDebug("Removing %s from app list.", appLnk.name().latin1()); | 78 | qDebug("Removing %s from app list.", appLnk.name().latin1()); |
79 | appList.remove(); | 79 | appList.remove(); |
80 | delete target; | 80 | delete target; |
81 | } | 81 | } |
82 | } | 82 | } |
83 | update(); | 83 | update(); |
84 | } | 84 | } |
85 | 85 | ||
86 | void RunningAppBar::mousePressEvent(QMouseEvent *e) | 86 | void RunningAppBar::mousePressEvent(QMouseEvent *e) |
87 | { | 87 | { |
88 | // Find out if the user is clicking on an app icon... | 88 | // Find out if the user is clicking on an app icon... |
89 | // If so, snag the index so when we repaint we show it | 89 | // If so, snag the index so when we repaint we show it |
90 | // as highlighed. | 90 | // as highlighed. |
91 | selectedAppIndex = 0; | 91 | selectedAppIndex = 0; |
92 | int x=0; | 92 | int x=0; |
93 | QListIterator<AppLnk> it( appList ); | 93 | QListIterator<AppLnk> it( appList ); |
94 | for ( ; it.current(); ++it,++selectedAppIndex,x+=spacing ) { | 94 | for ( ; it.current(); ++it,++selectedAppIndex,x+=spacing ) { |
95 | if ( x + spacing <= width() ) { | 95 | if ( x + spacing <= width() ) { |
96 | if ( e->x() >= x && e->x() < x+spacing ) { | 96 | if ( e->x() >= x && e->x() < x+spacing ) { |
97 | if ( selectedAppIndex < (int)appList.count() ) { | 97 | if ( selectedAppIndex < (int)appList.count() ) { |
98 | repaint(FALSE); | 98 | repaint(FALSE); |
99 | return; | 99 | return; |
100 | } | 100 | } |
101 | } | 101 | } |
102 | } else { | 102 | } else { |
103 | break; | 103 | break; |
104 | } | 104 | } |
105 | } | 105 | } |
106 | selectedAppIndex = -1; | 106 | selectedAppIndex = -1; |
107 | repaint( FALSE ); | 107 | repaint( FALSE ); |
108 | } | 108 | } |
109 | 109 | ||
110 | void RunningAppBar::mouseReleaseEvent(QMouseEvent *e) | 110 | void RunningAppBar::mouseReleaseEvent(QMouseEvent *e) |
111 | { | 111 | { |
112 | if (e->button() == QMouseEvent::RightButton) | 112 | if (e->button() == QMouseEvent::RightButton) |
113 | return; | 113 | return; |
114 | if ( selectedAppIndex >= 0 ) { | 114 | if ( selectedAppIndex >= 0 ) { |
115 | QString app = appList.at(selectedAppIndex)->exec(); | 115 | QString app = appList.at(selectedAppIndex)->exec(); |
116 | QCopEnvelope e("QPE/System", "raise(QString)"); | 116 | QCopEnvelope e("QPE/System", "raise(QString)"); |
117 | e << app; | 117 | e << app; |
118 | selectedAppIndex = -1; | 118 | selectedAppIndex = -1; |
119 | update(); | 119 | update(); |
120 | } | 120 | } |
121 | } | 121 | } |
122 | 122 | ||
123 | void RunningAppBar::paintEvent( QPaintEvent * ) | 123 | void RunningAppBar::paintEvent( QPaintEvent * ) |
124 | { | 124 | { |
125 | QPainter p( this ); | 125 | QPainter p( this ); |
126 | AppLnk *curApp; | 126 | AppLnk *curApp; |
127 | int x = 0; | 127 | int x = 0; |
128 | int y = (height() - AppLnk::smallIconSize()) / 2; | 128 | int y = (height() - AppLnk::smallIconSize()) / 2; |
129 | int i = 0; | 129 | int i = 0; |
130 | 130 | ||
131 | p.fillRect( 0, 0, width(), height(), colorGroup().background() ); | 131 | p.fillRect( 0, 0, width(), height(), colorGroup().background() ); |
132 | 132 | ||
133 | QListIterator<AppLnk> it(appList); | 133 | QListIterator<AppLnk> it(appList); |
134 | 134 | ||
diff --git a/core/launcher/server.cpp b/core/launcher/server.cpp index 068d716..ea0b792 100644 --- a/core/launcher/server.cpp +++ b/core/launcher/server.cpp | |||
@@ -54,216 +54,216 @@ | |||
54 | #include <opie2/odevice.h> | 54 | #include <opie2/odevice.h> |
55 | 55 | ||
56 | #include <unistd.h> | 56 | #include <unistd.h> |
57 | #include <qmainwindow.h> | 57 | #include <qmainwindow.h> |
58 | #include <qmessagebox.h> | 58 | #include <qmessagebox.h> |
59 | #include <qtimer.h> | 59 | #include <qtimer.h> |
60 | #include <qtextstream.h> | 60 | #include <qtextstream.h> |
61 | 61 | ||
62 | #include <stdlib.h> | 62 | #include <stdlib.h> |
63 | 63 | ||
64 | extern QRect qt_maxWindowRect; | 64 | extern QRect qt_maxWindowRect; |
65 | 65 | ||
66 | using namespace Opie; | 66 | using namespace Opie; |
67 | 67 | ||
68 | static QWidget *calibrate(bool) | 68 | static QWidget *calibrate(bool) |
69 | { | 69 | { |
70 | #ifdef Q_WS_QWS | 70 | #ifdef Q_WS_QWS |
71 | Calibrate *c = new Calibrate; | 71 | Calibrate *c = new Calibrate; |
72 | c->show(); | 72 | c->show(); |
73 | return c; | 73 | return c; |
74 | #else | 74 | #else |
75 | return 0; | 75 | return 0; |
76 | #endif | 76 | #endif |
77 | } | 77 | } |
78 | 78 | ||
79 | #define FACTORY(T) \ | 79 | #define FACTORY(T) \ |
80 | static QWidget *new##T( bool maximized ) { \ | 80 | static QWidget *new##T( bool maximized ) { \ |
81 | QWidget *w = new T( 0, 0, QWidget::WDestructiveClose | QWidget::WGroupLeader ); \ | 81 | QWidget *w = new T( 0, 0, QWidget::WDestructiveClose | QWidget::WGroupLeader ); \ |
82 | if ( maximized ) { \ | 82 | if ( maximized ) { \ |
83 | if ( qApp->desktop()->width() <= 350 ) { \ | 83 | if ( qApp->desktop()->width() <= 350 ) { \ |
84 | w->showMaximized(); \ | 84 | w->showMaximized(); \ |
85 | } else { \ | 85 | } else { \ |
86 | w->resize( QSize( 300, 300 ) ); \ | 86 | w->resize( QSize( 300, 300 ) ); \ |
87 | } \ | 87 | } \ |
88 | } \ | 88 | } \ |
89 | w->show(); \ | 89 | w->show(); \ |
90 | return w; \ | 90 | return w; \ |
91 | } | 91 | } |
92 | 92 | ||
93 | 93 | ||
94 | #ifdef SINGLE_APP | 94 | #ifdef SINGLE_APP |
95 | #define APP(a,b,c,d) FACTORY(b) | 95 | #define APP(a,b,c,d) FACTORY(b) |
96 | #include "apps.h" | 96 | #include "apps.h" |
97 | #undef APP | 97 | #undef APP |
98 | #endif // SINGLE_APP | 98 | #endif // SINGLE_APP |
99 | 99 | ||
100 | static Global::Command builtins[] = { | 100 | static Global::Command builtins[] = { |
101 | 101 | ||
102 | #ifdef SINGLE_APP | 102 | #ifdef SINGLE_APP |
103 | #define APP(a,b,c,d) { a, new##b, c, d }, | 103 | #define APP(a,b,c,d) { a, new##b, c, d }, |
104 | #include "apps.h" | 104 | #include "apps.h" |
105 | #undef APP | 105 | #undef APP |
106 | #endif | 106 | #endif |
107 | 107 | ||
108 | /* FIXME defines need to be defined*/ | 108 | /* FIXME defines need to be defined*/ |
109 | #if !defined(OPIE_NO_BUILTIN_CALIBRATE) | 109 | #if !defined(OPIE_NO_BUILTIN_CALIBRATE) |
110 | { "calibrate", calibrate, 1, 0 }, // No tr | 110 | { "calibrate", calibrate, 1, 0 }, // No tr |
111 | #endif | 111 | #endif |
112 | #if !defined(OPIE_NO_BUILTIN_SHUTDOWN) | 112 | #if !defined(OPIE_NO_BUILTIN_SHUTDOWN) |
113 | { "shutdown", Global::shutdown, 1, 0 }, // No tr | 113 | { "shutdown", Global::shutdown, 1, 0 }, // No tr |
114 | // { "run", run, 1, 0 }, // No tr | 114 | // { "run", run, 1, 0 }, // No tr |
115 | #endif | 115 | #endif |
116 | 116 | ||
117 | { 0, calibrate,0, 0 }, | 117 | { 0, calibrate,0, 0 }, |
118 | }; | 118 | }; |
119 | 119 | ||
120 | 120 | ||
121 | //--------------------------------------------------------------------------- | 121 | //--------------------------------------------------------------------------- |
122 | 122 | ||
123 | 123 | ||
124 | //=========================================================================== | 124 | //=========================================================================== |
125 | 125 | ||
126 | Server::Server() : | 126 | Server::Server() : |
127 | QWidget( 0, 0, WStyle_Tool | WStyle_Customize ), | 127 | QWidget( 0, 0, WStyle_Tool | WStyle_Customize ), |
128 | qcopBridge( 0 ), | 128 | qcopBridge( 0 ), |
129 | transferServer( 0 ), | 129 | transferServer( 0 ), |
130 | packageHandler( 0 ), | 130 | packageHandler( 0 ), |
131 | syncDialog( 0 ) | 131 | syncDialog( 0 ) |
132 | { | 132 | { |
133 | Global::setBuiltinCommands(builtins); | 133 | Global::setBuiltinCommands(builtins); |
134 | 134 | ||
135 | tid_xfer = 0; | 135 | tid_xfer = 0; |
136 | /* ### FIXME ### */ | 136 | /* ### FIXME ### */ |
137 | /* tid_today = startTimer(3600*2*1000);*/ | 137 | /* tid_today = startTimer(3600*2*1000);*/ |
138 | last_today_show = QDate::currentDate(); | 138 | last_today_show = QDate::currentDate(); |
139 | 139 | ||
140 | #if 0 | 140 | #if 0 |
141 | tsmMonitor = new TempScreenSaverMode(); | 141 | tsmMonitor = new TempScreenSaverMode(); |
142 | connect( tsmMonitor, SIGNAL(forceSuspend()), qApp, SIGNAL(power()) ); | 142 | connect( tsmMonitor, SIGNAL(forceSuspend()), qApp, SIGNAL(power()) ); |
143 | #endif | 143 | #endif |
144 | 144 | ||
145 | serverGui = new Launcher; | 145 | serverGui = new Launcher; |
146 | serverGui->createGUI(); | 146 | serverGui->createGUI(); |
147 | 147 | ||
148 | docList = new DocumentList( serverGui ); | 148 | docList = new DocumentList( serverGui ); |
149 | appLauncher = new AppLauncher(this); | 149 | appLauncher = new AppLauncher(this); |
150 | connect(appLauncher, SIGNAL(launched(int, const QString &)), this, SLOT(applicationLaunched(int, const QString &)) ); | 150 | connect(appLauncher, SIGNAL(launched(int,const QString&)), this, SLOT(applicationLaunched(int,const QString&)) ); |
151 | connect(appLauncher, SIGNAL(terminated(int, const QString &)), this, SLOT(applicationTerminated(int, const QString &)) ); | 151 | connect(appLauncher, SIGNAL(terminated(int,const QString&)), this, SLOT(applicationTerminated(int,const QString&)) ); |
152 | connect(appLauncher, SIGNAL(connected(const QString &)), this, SLOT(applicationConnected(const QString &)) ); | 152 | connect(appLauncher, SIGNAL(connected(const QString&)), this, SLOT(applicationConnected(const QString&)) ); |
153 | 153 | ||
154 | storage = new StorageInfo( this ); | 154 | storage = new StorageInfo( this ); |
155 | connect( storage, SIGNAL(disksChanged()), this, SLOT(storageChanged()) ); | 155 | connect( storage, SIGNAL(disksChanged()), this, SLOT(storageChanged()) ); |
156 | 156 | ||
157 | // start services | 157 | // start services |
158 | startTransferServer(); | 158 | startTransferServer(); |
159 | (void) new IrServer( this ); | 159 | (void) new IrServer( this ); |
160 | 160 | ||
161 | packageHandler = new PackageHandler( this ); | 161 | packageHandler = new PackageHandler( this ); |
162 | connect(qApp, SIGNAL(activate(const Opie::ODeviceButton*,bool)), | 162 | connect(qApp, SIGNAL(activate(const Opie::ODeviceButton*,bool)), |
163 | this,SLOT(activate(const Opie::ODeviceButton*,bool))); | 163 | this,SLOT(activate(const Opie::ODeviceButton*,bool))); |
164 | 164 | ||
165 | setGeometry( -10, -10, 9, 9 ); | 165 | setGeometry( -10, -10, 9, 9 ); |
166 | 166 | ||
167 | QCopChannel *channel = new QCopChannel("QPE/System", this); | 167 | QCopChannel *channel = new QCopChannel("QPE/System", this); |
168 | connect(channel, SIGNAL(received(const QCString &, const QByteArray &)), | 168 | connect(channel, SIGNAL(received(const QCString&,const QByteArray&)), |
169 | this, SLOT(systemMsg(const QCString &, const QByteArray &)) ); | 169 | this, SLOT(systemMsg(const QCString&,const QByteArray&)) ); |
170 | 170 | ||
171 | QCopChannel *tbChannel = new QCopChannel( "QPE/TaskBar", this ); | 171 | QCopChannel *tbChannel = new QCopChannel( "QPE/TaskBar", this ); |
172 | connect( tbChannel, SIGNAL(received(const QCString&, const QByteArray&)), | 172 | connect( tbChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
173 | this, SLOT(receiveTaskBar(const QCString&, const QByteArray&)) ); | 173 | this, SLOT(receiveTaskBar(const QCString&,const QByteArray&)) ); |
174 | 174 | ||
175 | connect( qApp, SIGNAL(prepareForRestart()), this, SLOT(terminateServers()) ); | 175 | connect( qApp, SIGNAL(prepareForRestart()), this, SLOT(terminateServers()) ); |
176 | connect( qApp, SIGNAL(timeChanged()), this, SLOT(pokeTimeMonitors()) ); | 176 | connect( qApp, SIGNAL(timeChanged()), this, SLOT(pokeTimeMonitors()) ); |
177 | 177 | ||
178 | preloadApps(); | 178 | preloadApps(); |
179 | } | 179 | } |
180 | 180 | ||
181 | void Server::show() | 181 | void Server::show() |
182 | { | 182 | { |
183 | ServerApplication::login(TRUE); | 183 | ServerApplication::login(TRUE); |
184 | QWidget::show(); | 184 | QWidget::show(); |
185 | } | 185 | } |
186 | 186 | ||
187 | Server::~Server() | 187 | Server::~Server() |
188 | { | 188 | { |
189 | serverGui->destroyGUI(); | 189 | serverGui->destroyGUI(); |
190 | delete docList; | 190 | delete docList; |
191 | delete qcopBridge; | 191 | delete qcopBridge; |
192 | delete transferServer; | 192 | delete transferServer; |
193 | delete serverGui; | 193 | delete serverGui; |
194 | #if 0 | 194 | #if 0 |
195 | delete tsmMonitor; | 195 | delete tsmMonitor; |
196 | #endif | 196 | #endif |
197 | } | 197 | } |
198 | 198 | ||
199 | static bool hasVisibleWindow(const QString& clientname, bool partial) | 199 | static bool hasVisibleWindow(const QString& clientname, bool partial) |
200 | { | 200 | { |
201 | #ifdef QWS | 201 | #ifdef QWS |
202 | const QList<QWSWindow> &list = qwsServer->clientWindows(); | 202 | const QList<QWSWindow> &list = qwsServer->clientWindows(); |
203 | QWSWindow* w; | 203 | QWSWindow* w; |
204 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { | 204 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { |
205 | if ( w->client()->identity() == clientname ) { | 205 | if ( w->client()->identity() == clientname ) { |
206 | if ( partial && !w->isFullyObscured() ) | 206 | if ( partial && !w->isFullyObscured() ) |
207 | return TRUE; | 207 | return TRUE; |
208 | if ( !partial && !w->isFullyObscured() && !w->isPartiallyObscured() ) { | 208 | if ( !partial && !w->isFullyObscured() && !w->isPartiallyObscured() ) { |
209 | # if QT_VERSION < 0x030000 | 209 | # if QT_VERSION < 0x030000 |
210 | QRect mwr = qt_screen->mapToDevice(qt_maxWindowRect, | 210 | QRect mwr = qt_screen->mapToDevice(qt_maxWindowRect, |
211 | QSize(qt_screen->width(),qt_screen->height()) ); | 211 | QSize(qt_screen->width(),qt_screen->height()) ); |
212 | # else | 212 | # else |
213 | QRect mwr = qt_maxWindowRect; | 213 | QRect mwr = qt_maxWindowRect; |
214 | # endif | 214 | # endif |
215 | if ( mwr.contains(w->requested().boundingRect()) ) | 215 | if ( mwr.contains(w->requested().boundingRect()) ) |
216 | return TRUE; | 216 | return TRUE; |
217 | } | 217 | } |
218 | } | 218 | } |
219 | } | 219 | } |
220 | #endif | 220 | #endif |
221 | return FALSE; | 221 | return FALSE; |
222 | } | 222 | } |
223 | 223 | ||
224 | void Server::activate(const Opie::ODeviceButton* button, bool held) | 224 | void Server::activate(const Opie::ODeviceButton* button, bool held) |
225 | { | 225 | { |
226 | Global::terminateBuiltin("calibrate"); // No tr | 226 | Global::terminateBuiltin("calibrate"); // No tr |
227 | Opie::OQCopMessage om; | 227 | Opie::OQCopMessage om; |
228 | if ( held ) { | 228 | if ( held ) { |
229 | om = button->heldAction(); | 229 | om = button->heldAction(); |
230 | } else { | 230 | } else { |
231 | om = button->pressedAction(); | 231 | om = button->pressedAction(); |
232 | } | 232 | } |
233 | 233 | ||
234 | if ( om.channel() != "ignore" ) | 234 | if ( om.channel() != "ignore" ) |
235 | om.send(); | 235 | om.send(); |
236 | 236 | ||
237 | // A button with no action defined, will return a null ServiceRequest. Don't attempt | 237 | // A button with no action defined, will return a null ServiceRequest. Don't attempt |
238 | // to send/do anything with this as it will crash | 238 | // to send/do anything with this as it will crash |
239 | /* ### FIXME */ | 239 | /* ### FIXME */ |
240 | #if 0 | 240 | #if 0 |
241 | if ( !sr.isNull() ) { | 241 | if ( !sr.isNull() ) { |
242 | QString app = sr.app(); | 242 | QString app = sr.app(); |
243 | bool vis = hasVisibleWindow(app, app != "qpe"); | 243 | bool vis = hasVisibleWindow(app, app != "qpe"); |
244 | if ( sr.message() == "raise()" && vis ) { | 244 | if ( sr.message() == "raise()" && vis ) { |
245 | sr.setMessage("nextView()"); | 245 | sr.setMessage("nextView()"); |
246 | } else { | 246 | } else { |
247 | // "back door" | 247 | // "back door" |
248 | sr << (int)vis; | 248 | sr << (int)vis; |
249 | } | 249 | } |
250 | 250 | ||
251 | sr.send(); | 251 | sr.send(); |
252 | } | 252 | } |
253 | #endif | 253 | #endif |
254 | } | 254 | } |
255 | 255 | ||
256 | 256 | ||
257 | #ifdef Q_WS_QWS | 257 | #ifdef Q_WS_QWS |
258 | 258 | ||
259 | 259 | ||
260 | typedef struct KeyOverride { | 260 | typedef struct KeyOverride { |
261 | ushort scan_code; | 261 | ushort scan_code; |
262 | QWSServer::KeyMap map; | 262 | QWSServer::KeyMap map; |
263 | }; | 263 | }; |
264 | 264 | ||
265 | 265 | ||
266 | static const KeyOverride jp109keys[] = { | 266 | static const KeyOverride jp109keys[] = { |
267 | { 0x03, { Qt::Key_2, '2' , 0x22 , 0xffff } }, | 267 | { 0x03, { Qt::Key_2, '2' , 0x22 , 0xffff } }, |
268 | { 0x07, { Qt::Key_6, '6' , '&' , 0xffff } }, | 268 | { 0x07, { Qt::Key_6, '6' , '&' , 0xffff } }, |
269 | { 0x08, { Qt::Key_7, '7' , '\'' , 0xffff } }, | 269 | { 0x08, { Qt::Key_7, '7' , '\'' , 0xffff } }, |
@@ -520,194 +520,194 @@ void Server::systemMsg(const QCString &msg, const QByteArray &data) | |||
520 | } | 520 | } |
521 | } else { | 521 | } else { |
522 | } | 522 | } |
523 | } | 523 | } |
524 | #endif | 524 | #endif |
525 | } | 525 | } |
526 | 526 | ||
527 | void Server::receiveTaskBar(const QCString &msg, const QByteArray &data) | 527 | void Server::receiveTaskBar(const QCString &msg, const QByteArray &data) |
528 | { | 528 | { |
529 | QDataStream stream( data, IO_ReadOnly ); | 529 | QDataStream stream( data, IO_ReadOnly ); |
530 | 530 | ||
531 | if ( msg == "reloadApps()" ) { | 531 | if ( msg == "reloadApps()" ) { |
532 | docList->reloadAppLnks(); | 532 | docList->reloadAppLnks(); |
533 | } else if ( msg == "soundAlarm()" ) { | 533 | } else if ( msg == "soundAlarm()" ) { |
534 | ServerApplication::soundAlarm(); | 534 | ServerApplication::soundAlarm(); |
535 | } | 535 | } |
536 | else if ( msg == "setLed(int,bool)" ) { | 536 | else if ( msg == "setLed(int,bool)" ) { |
537 | int led, status; | 537 | int led, status; |
538 | stream >> led >> status; | 538 | stream >> led >> status; |
539 | 539 | ||
540 | QValueList <OLed> ll = ODevice::inst ( )-> ledList ( ); | 540 | QValueList <OLed> ll = ODevice::inst ( )-> ledList ( ); |
541 | if ( ll. count ( )){ | 541 | if ( ll. count ( )){ |
542 | OLed l = ll. contains ( Led_Mail ) ? Led_Mail : ll [0]; | 542 | OLed l = ll. contains ( Led_Mail ) ? Led_Mail : ll [0]; |
543 | bool canblink = ODevice::inst ( )-> ledStateList ( l ). contains ( Led_BlinkSlow ); | 543 | bool canblink = ODevice::inst ( )-> ledStateList ( l ). contains ( Led_BlinkSlow ); |
544 | 544 | ||
545 | ODevice::inst ( )-> setLedState ( l, status ? ( canblink ? Led_BlinkSlow : Led_On ) : Led_Off ); | 545 | ODevice::inst ( )-> setLedState ( l, status ? ( canblink ? Led_BlinkSlow : Led_On ) : Led_Off ); |
546 | } | 546 | } |
547 | } | 547 | } |
548 | } | 548 | } |
549 | 549 | ||
550 | void Server::cancelSync() | 550 | void Server::cancelSync() |
551 | { | 551 | { |
552 | #ifndef QT_NO_COP | 552 | #ifndef QT_NO_COP |
553 | QCopEnvelope e( "QPE/Desktop", "cancelSync()" ); | 553 | QCopEnvelope e( "QPE/Desktop", "cancelSync()" ); |
554 | #endif | 554 | #endif |
555 | delete syncDialog; | 555 | delete syncDialog; |
556 | syncDialog = 0; | 556 | syncDialog = 0; |
557 | } | 557 | } |
558 | 558 | ||
559 | bool Server::mkdir(const QString &localPath) | 559 | bool Server::mkdir(const QString &localPath) |
560 | { | 560 | { |
561 | QDir fullDir(localPath); | 561 | QDir fullDir(localPath); |
562 | if (fullDir.exists()) | 562 | if (fullDir.exists()) |
563 | return true; | 563 | return true; |
564 | 564 | ||
565 | // at this point the directory doesn't exist | 565 | // at this point the directory doesn't exist |
566 | // go through the directory tree and start creating the direcotories | 566 | // go through the directory tree and start creating the direcotories |
567 | // that don't exist; if we can't create the directories, return false | 567 | // that don't exist; if we can't create the directories, return false |
568 | 568 | ||
569 | QString dirSeps = "/"; | 569 | QString dirSeps = "/"; |
570 | int dirIndex = localPath.find(dirSeps); | 570 | int dirIndex = localPath.find(dirSeps); |
571 | QString checkedPath; | 571 | QString checkedPath; |
572 | 572 | ||
573 | // didn't find any seps; weird, use the cur dir instead | 573 | // didn't find any seps; weird, use the cur dir instead |
574 | if (dirIndex == -1) { | 574 | if (dirIndex == -1) { |
575 | //qDebug("No seperators found in path %s", localPath.latin1()); | 575 | //qDebug("No seperators found in path %s", localPath.latin1()); |
576 | checkedPath = QDir::currentDirPath(); | 576 | checkedPath = QDir::currentDirPath(); |
577 | } | 577 | } |
578 | 578 | ||
579 | while (checkedPath != localPath) { | 579 | while (checkedPath != localPath) { |
580 | // no more seperators found, use the local path | 580 | // no more seperators found, use the local path |
581 | if (dirIndex == -1) | 581 | if (dirIndex == -1) |
582 | checkedPath = localPath; | 582 | checkedPath = localPath; |
583 | else { | 583 | else { |
584 | // the next directory to check | 584 | // the next directory to check |
585 | checkedPath = localPath.left(dirIndex) + "/"; | 585 | checkedPath = localPath.left(dirIndex) + "/"; |
586 | // advance the iterator; the next dir seperator | 586 | // advance the iterator; the next dir seperator |
587 | dirIndex = localPath.find(dirSeps, dirIndex+1); | 587 | dirIndex = localPath.find(dirSeps, dirIndex+1); |
588 | } | 588 | } |
589 | 589 | ||
590 | QDir checkDir(checkedPath); | 590 | QDir checkDir(checkedPath); |
591 | if (!checkDir.exists()) { | 591 | if (!checkDir.exists()) { |
592 | //qDebug("mkdir making dir %s", checkedPath.latin1()); | 592 | //qDebug("mkdir making dir %s", checkedPath.latin1()); |
593 | 593 | ||
594 | if (!checkDir.mkdir(checkedPath)) { | 594 | if (!checkDir.mkdir(checkedPath)) { |
595 | qDebug("Unable to make directory %s", checkedPath.latin1()); | 595 | qDebug("Unable to make directory %s", checkedPath.latin1()); |
596 | return FALSE; | 596 | return FALSE; |
597 | } | 597 | } |
598 | } | 598 | } |
599 | 599 | ||
600 | } | 600 | } |
601 | return TRUE; | 601 | return TRUE; |
602 | } | 602 | } |
603 | 603 | ||
604 | void Server::styleChange( QStyle &s ) | 604 | void Server::styleChange( QStyle &s ) |
605 | { | 605 | { |
606 | QWidget::styleChange( s ); | 606 | QWidget::styleChange( s ); |
607 | } | 607 | } |
608 | 608 | ||
609 | void Server::startTransferServer() | 609 | void Server::startTransferServer() |
610 | { | 610 | { |
611 | if ( !qcopBridge ) { | 611 | if ( !qcopBridge ) { |
612 | // start qcop bridge server | 612 | // start qcop bridge server |
613 | qcopBridge = new QCopBridge( 4243 ); | 613 | qcopBridge = new QCopBridge( 4243 ); |
614 | if ( qcopBridge->ok() ) { | 614 | if ( qcopBridge->ok() ) { |
615 | // ... OK | 615 | // ... OK |
616 | connect( qcopBridge, SIGNAL(connectionClosed(const QHostAddress &)), | 616 | connect( qcopBridge, SIGNAL(connectionClosed(const QHostAddress&)), |
617 | this, SLOT(syncConnectionClosed(const QHostAddress &)) ); | 617 | this, SLOT(syncConnectionClosed(const QHostAddress&)) ); |
618 | } else { | 618 | } else { |
619 | delete qcopBridge; | 619 | delete qcopBridge; |
620 | qcopBridge = 0; | 620 | qcopBridge = 0; |
621 | } | 621 | } |
622 | } | 622 | } |
623 | if ( !transferServer ) { | 623 | if ( !transferServer ) { |
624 | // start transfer server | 624 | // start transfer server |
625 | transferServer = new TransferServer( 4242 ); | 625 | transferServer = new TransferServer( 4242 ); |
626 | if ( transferServer->ok() ) { | 626 | if ( transferServer->ok() ) { |
627 | // ... OK | 627 | // ... OK |
628 | } else { | 628 | } else { |
629 | delete transferServer; | 629 | delete transferServer; |
630 | transferServer = 0; | 630 | transferServer = 0; |
631 | } | 631 | } |
632 | } | 632 | } |
633 | if ( !transferServer || !qcopBridge ) | 633 | if ( !transferServer || !qcopBridge ) |
634 | tid_xfer = startTimer( 2000 ); | 634 | tid_xfer = startTimer( 2000 ); |
635 | } | 635 | } |
636 | 636 | ||
637 | void Server::timerEvent( QTimerEvent *e ) | 637 | void Server::timerEvent( QTimerEvent *e ) |
638 | { | 638 | { |
639 | if ( e->timerId() == tid_xfer ) { | 639 | if ( e->timerId() == tid_xfer ) { |
640 | killTimer( tid_xfer ); | 640 | killTimer( tid_xfer ); |
641 | tid_xfer = 0; | 641 | tid_xfer = 0; |
642 | startTransferServer(); | 642 | startTransferServer(); |
643 | } | 643 | } |
644 | /* ### FIXME today startin */ | 644 | /* ### FIXME today startin */ |
645 | #if 0 | 645 | #if 0 |
646 | else if ( e->timerId() == tid_today ) { | 646 | else if ( e->timerId() == tid_today ) { |
647 | QDate today = QDate::currentDate(); | 647 | QDate today = QDate::currentDate(); |
648 | if ( today != last_today_show ) { | 648 | if ( today != last_today_show ) { |
649 | last_today_show = today; | 649 | last_today_show = today; |
650 | Config cfg("today"); | 650 | Config cfg("today"); |
651 | cfg.setGroup("Start"); | 651 | cfg.setGroup("Start"); |
652 | #ifndef QPE_DEFAULT_TODAY_MODE | 652 | #ifndef QPE_DEFAULT_TODAY_MODE |
653 | #define QPE_DEFAULT_TODAY_MODE "Never" | 653 | #define QPE_DEFAULT_TODAY_MODE "Never" |
654 | #endif | 654 | #endif |
655 | if ( cfg.readEntry("Mode",QPE_DEFAULT_TODAY_MODE) == "Daily" ) { | 655 | if ( cfg.readEntry("Mode",QPE_DEFAULT_TODAY_MODE) == "Daily" ) { |
656 | QCopEnvelope env(Service::channel("today"),"raise()"); | 656 | QCopEnvelope env(Service::channel("today"),"raise()"); |
657 | } | 657 | } |
658 | } | 658 | } |
659 | } | 659 | } |
660 | #endif | 660 | #endif |
661 | } | 661 | } |
662 | 662 | ||
663 | void Server::terminateServers() | 663 | void Server::terminateServers() |
664 | { | 664 | { |
665 | delete transferServer; | 665 | delete transferServer; |
666 | delete qcopBridge; | 666 | delete qcopBridge; |
667 | transferServer = 0; | 667 | transferServer = 0; |
668 | qcopBridge = 0; | 668 | qcopBridge = 0; |
669 | } | 669 | } |
670 | 670 | ||
671 | void Server::syncConnectionClosed( const QHostAddress & ) | 671 | void Server::syncConnectionClosed( const QHostAddress & ) |
672 | { | 672 | { |
673 | qDebug( "Lost sync connection" ); | 673 | qDebug( "Lost sync connection" ); |
674 | delete syncDialog; | 674 | delete syncDialog; |
675 | syncDialog = 0; | 675 | syncDialog = 0; |
676 | } | 676 | } |
677 | 677 | ||
678 | void Server::pokeTimeMonitors() | 678 | void Server::pokeTimeMonitors() |
679 | { | 679 | { |
680 | #if 0 | 680 | #if 0 |
681 | // inform all TimeMonitors | 681 | // inform all TimeMonitors |
682 | QStrList tms = Service::channels("TimeMonitor"); | 682 | QStrList tms = Service::channels("TimeMonitor"); |
683 | for (const char* ch = tms.first(); ch; ch=tms.next()) { | 683 | for (const char* ch = tms.first(); ch; ch=tms.next()) { |
684 | QString t = getenv("TZ"); | 684 | QString t = getenv("TZ"); |
685 | QCopEnvelope e(ch, "timeChange(QString)"); | 685 | QCopEnvelope e(ch, "timeChange(QString)"); |
686 | e << t; | 686 | e << t; |
687 | } | 687 | } |
688 | #endif | 688 | #endif |
689 | } | 689 | } |
690 | 690 | ||
691 | void Server::applicationLaunched(int, const QString &app) | 691 | void Server::applicationLaunched(int, const QString &app) |
692 | { | 692 | { |
693 | serverGui->applicationStateChanged( app, ServerInterface::Launching ); | 693 | serverGui->applicationStateChanged( app, ServerInterface::Launching ); |
694 | } | 694 | } |
695 | 695 | ||
696 | void Server::applicationTerminated(int pid, const QString &app) | 696 | void Server::applicationTerminated(int pid, const QString &app) |
697 | { | 697 | { |
698 | serverGui->applicationStateChanged( app, ServerInterface::Terminated ); | 698 | serverGui->applicationStateChanged( app, ServerInterface::Terminated ); |
699 | #if 0 | 699 | #if 0 |
700 | tsmMonitor->applicationTerminated( pid ); | 700 | tsmMonitor->applicationTerminated( pid ); |
701 | #endif | 701 | #endif |
702 | } | 702 | } |
703 | 703 | ||
704 | void Server::applicationConnected(const QString &app) | 704 | void Server::applicationConnected(const QString &app) |
705 | { | 705 | { |
706 | serverGui->applicationStateChanged( app, ServerInterface::Running ); | 706 | serverGui->applicationStateChanged( app, ServerInterface::Running ); |
707 | } | 707 | } |
708 | 708 | ||
709 | void Server::storageChanged() | 709 | void Server::storageChanged() |
710 | { | 710 | { |
711 | system( "qtopia-update-symlinks" ); | 711 | system( "qtopia-update-symlinks" ); |
712 | serverGui->storageChanged( storage->fileSystems() ); | 712 | serverGui->storageChanged( storage->fileSystems() ); |
713 | docList->storageChanged(); | 713 | docList->storageChanged(); |
diff --git a/core/launcher/serverapp.cpp b/core/launcher/serverapp.cpp index f7c2341..d38dd97 100644 --- a/core/launcher/serverapp.cpp +++ b/core/launcher/serverapp.cpp | |||
@@ -208,204 +208,204 @@ bool KeyFilter::checkButtonAction(bool db, int keycode, int press, int autoRepe | |||
208 | emit activate(button, FALSE); | 208 | emit activate(button, FALSE); |
209 | } else if ( press ) { | 209 | } else if ( press ) { |
210 | heldButton = button; | 210 | heldButton = button; |
211 | held_tid = startTimer( ODevice::inst ()->buttonHoldTime () ); | 211 | held_tid = startTimer( ODevice::inst ()->buttonHoldTime () ); |
212 | } else if ( heldButton ) { | 212 | } else if ( heldButton ) { |
213 | heldButton = 0; | 213 | heldButton = 0; |
214 | emit activate(button, FALSE); | 214 | emit activate(button, FALSE); |
215 | } | 215 | } |
216 | QWSServer::screenSaverActivate(FALSE); | 216 | QWSServer::screenSaverActivate(FALSE); |
217 | return TRUE; | 217 | return TRUE; |
218 | } | 218 | } |
219 | return false; | 219 | return false; |
220 | } | 220 | } |
221 | if ( keycode == HardKey_Suspend ) { | 221 | if ( keycode == HardKey_Suspend ) { |
222 | if ( press ) emit power(); | 222 | if ( press ) emit power(); |
223 | return TRUE; | 223 | return TRUE; |
224 | } | 224 | } |
225 | if ( keycode == HardKey_Backlight ) { | 225 | if ( keycode == HardKey_Backlight ) { |
226 | if ( press ) emit backlight(); | 226 | if ( press ) emit backlight(); |
227 | return TRUE; | 227 | return TRUE; |
228 | } | 228 | } |
229 | if ( keycode == Key_F32 ) { | 229 | if ( keycode == Key_F32 ) { |
230 | #ifndef QT_NO_COP | 230 | #ifndef QT_NO_COP |
231 | if ( press ) QCopEnvelope e( "QPE/Desktop", "startSync()" ); | 231 | if ( press ) QCopEnvelope e( "QPE/Desktop", "startSync()" ); |
232 | #endif | 232 | #endif |
233 | return TRUE; | 233 | return TRUE; |
234 | } | 234 | } |
235 | if ( keycode == Key_F31 ) { | 235 | if ( keycode == Key_F31 ) { |
236 | if ( press ) emit symbol(); | 236 | if ( press ) emit symbol(); |
237 | QWSServer::screenSaverActivate(FALSE); | 237 | QWSServer::screenSaverActivate(FALSE); |
238 | return TRUE; | 238 | return TRUE; |
239 | } | 239 | } |
240 | 240 | ||
241 | if ( keycode == Key_NumLock ) | 241 | if ( keycode == Key_NumLock ) |
242 | if ( press ) emit numLockStateToggle(); | 242 | if ( press ) emit numLockStateToggle(); |
243 | 243 | ||
244 | if ( keycode == Key_CapsLock ) | 244 | if ( keycode == Key_CapsLock ) |
245 | if ( press ) emit capsLockStateToggle(); | 245 | if ( press ) emit capsLockStateToggle(); |
246 | 246 | ||
247 | if ( serverApp ) | 247 | if ( serverApp ) |
248 | serverApp->keyClick(keycode,press,autoRepeat); | 248 | serverApp->keyClick(keycode,press,autoRepeat); |
249 | 249 | ||
250 | return FALSE; | 250 | return FALSE; |
251 | } | 251 | } |
252 | 252 | ||
253 | enum MemState { MemUnknown, MemVeryLow, MemLow, MemNormal } memstate=MemUnknown; | 253 | enum MemState { MemUnknown, MemVeryLow, MemLow, MemNormal } memstate=MemUnknown; |
254 | 254 | ||
255 | #if defined(QPE_HAVE_MEMALERTER) | 255 | #if defined(QPE_HAVE_MEMALERTER) |
256 | QPE_MEMALERTER_IMPL | 256 | QPE_MEMALERTER_IMPL |
257 | #endif | 257 | #endif |
258 | 258 | ||
259 | 259 | ||
260 | 260 | ||
261 | //--------------------------------------------------------------------------- | 261 | //--------------------------------------------------------------------------- |
262 | 262 | ||
263 | bool ServerApplication::doRestart = FALSE; | 263 | bool ServerApplication::doRestart = FALSE; |
264 | bool ServerApplication::allowRestart = TRUE; | 264 | bool ServerApplication::allowRestart = TRUE; |
265 | bool ServerApplication::ms_is_starting = TRUE; | 265 | bool ServerApplication::ms_is_starting = TRUE; |
266 | 266 | ||
267 | void ServerApplication::switchLCD( bool on ) { | 267 | void ServerApplication::switchLCD( bool on ) { |
268 | if ( !qApp ) | 268 | if ( !qApp ) |
269 | return; | 269 | return; |
270 | 270 | ||
271 | ServerApplication *dapp = ServerApplication::me() ; | 271 | ServerApplication *dapp = ServerApplication::me() ; |
272 | 272 | ||
273 | if ( !dapp-> m_screensaver ) | 273 | if ( !dapp-> m_screensaver ) |
274 | return; | 274 | return; |
275 | 275 | ||
276 | if ( on ) { | 276 | if ( on ) { |
277 | dapp-> m_screensaver-> setDisplayState ( true ); | 277 | dapp-> m_screensaver-> setDisplayState ( true ); |
278 | dapp-> m_screensaver-> setBacklight ( -3 ); | 278 | dapp-> m_screensaver-> setBacklight ( -3 ); |
279 | }else | 279 | }else |
280 | dapp-> m_screensaver-> setDisplayState ( false ); | 280 | dapp-> m_screensaver-> setDisplayState ( false ); |
281 | 281 | ||
282 | 282 | ||
283 | } | 283 | } |
284 | 284 | ||
285 | ServerApplication::ServerApplication( int& argc, char **argv, Type t ) | 285 | ServerApplication::ServerApplication( int& argc, char **argv, Type t ) |
286 | : QPEApplication( argc, argv, t ) | 286 | : QPEApplication( argc, argv, t ) |
287 | { | 287 | { |
288 | ms_is_starting = true; | 288 | ms_is_starting = true; |
289 | 289 | ||
290 | // We know we'll have lots of cached pixmaps due to App/DocLnks | 290 | // We know we'll have lots of cached pixmaps due to App/DocLnks |
291 | QPixmapCache::setCacheLimit(512); | 291 | QPixmapCache::setCacheLimit(512); |
292 | 292 | ||
293 | m_ps = new PowerStatus; | 293 | m_ps = new PowerStatus; |
294 | m_ps_last = new PowerStatus; | 294 | m_ps_last = new PowerStatus; |
295 | pa = new DesktopPowerAlerter( 0 ); | 295 | pa = new DesktopPowerAlerter( 0 ); |
296 | 296 | ||
297 | m_apm_timer = new QTimer( this ); | 297 | m_apm_timer = new QTimer( this ); |
298 | connect(m_apm_timer, SIGNAL( timeout() ), | 298 | connect(m_apm_timer, SIGNAL( timeout() ), |
299 | this, SLOT( apmTimeout() ) ); | 299 | this, SLOT( apmTimeout() ) ); |
300 | 300 | ||
301 | reloadPowerWarnSettings(); | 301 | reloadPowerWarnSettings(); |
302 | 302 | ||
303 | QCopChannel *channel = new QCopChannel( "QPE/System", this ); | 303 | QCopChannel *channel = new QCopChannel( "QPE/System", this ); |
304 | connect(channel, SIGNAL(received( const QCString&, const QByteArray& ) ), | 304 | connect(channel, SIGNAL(received(const QCString&,const QByteArray&) ), |
305 | this, SLOT(systemMessage(const QCString&, const QByteArray& ) ) ); | 305 | this, SLOT(systemMessage(const QCString&,const QByteArray&) ) ); |
306 | 306 | ||
307 | channel = new QCopChannel("QPE/Launcher", this ); | 307 | channel = new QCopChannel("QPE/Launcher", this ); |
308 | connect(channel, SIGNAL(received( const QCString&, const QByteArray& ) ), | 308 | connect(channel, SIGNAL(received(const QCString&,const QByteArray&) ), |
309 | this, SLOT(launcherMessage( const QCString&, const QByteArray& ) ) ); | 309 | this, SLOT(launcherMessage(const QCString&,const QByteArray&) ) ); |
310 | 310 | ||
311 | m_screensaver = new OpieScreenSaver(); | 311 | m_screensaver = new OpieScreenSaver(); |
312 | m_screensaver->setInterval( -1 ); | 312 | m_screensaver->setInterval( -1 ); |
313 | QWSServer::setScreenSaver( m_screensaver ); | 313 | QWSServer::setScreenSaver( m_screensaver ); |
314 | 314 | ||
315 | connect( qApp, SIGNAL( volumeChanged( bool ) ), | 315 | connect( qApp, SIGNAL( volumeChanged(bool) ), |
316 | this, SLOT( rereadVolumes() ) ); | 316 | this, SLOT( rereadVolumes() ) ); |
317 | 317 | ||
318 | 318 | ||
319 | /* ### PluginLoader libqtopia SafeMode */ | 319 | /* ### PluginLoader libqtopia SafeMode */ |
320 | #if 0 | 320 | #if 0 |
321 | if ( PluginLoader::inSafeMode() ) | 321 | if ( PluginLoader::inSafeMode() ) |
322 | QTimer::singleShot(500, this, SLOT(showSafeMode()) ); | 322 | QTimer::singleShot(500, this, SLOT(showSafeMode()) ); |
323 | QTimer::singleShot(20*1000, this, SLOT(clearSafeMode()) ); | 323 | QTimer::singleShot(20*1000, this, SLOT(clearSafeMode()) ); |
324 | #endif | 324 | #endif |
325 | 325 | ||
326 | kf = new KeyFilter(this); | 326 | kf = new KeyFilter(this); |
327 | 327 | ||
328 | connect( kf, SIGNAL(launch()), this, SIGNAL(launch()) ); | 328 | connect( kf, SIGNAL(launch()), this, SIGNAL(launch()) ); |
329 | connect( kf, SIGNAL(power()), this, SIGNAL(power()) ); | 329 | connect( kf, SIGNAL(power()), this, SIGNAL(power()) ); |
330 | connect( kf, SIGNAL(backlight()), this, SIGNAL(backlight()) ); | 330 | connect( kf, SIGNAL(backlight()), this, SIGNAL(backlight()) ); |
331 | connect( kf, SIGNAL(symbol()), this, SIGNAL(symbol())); | 331 | connect( kf, SIGNAL(symbol()), this, SIGNAL(symbol())); |
332 | connect( kf, SIGNAL(numLockStateToggle()), this,SIGNAL(numLockStateToggle())); | 332 | connect( kf, SIGNAL(numLockStateToggle()), this,SIGNAL(numLockStateToggle())); |
333 | connect( kf, SIGNAL(capsLockStateToggle()), this,SIGNAL(capsLockStateToggle())); | 333 | connect( kf, SIGNAL(capsLockStateToggle()), this,SIGNAL(capsLockStateToggle())); |
334 | connect( kf, SIGNAL(activate(const Opie::ODeviceButton*,bool)), | 334 | connect( kf, SIGNAL(activate(const Opie::ODeviceButton*,bool)), |
335 | this,SIGNAL(activate(const Opie::ODeviceButton*,bool))); | 335 | this,SIGNAL(activate(const Opie::ODeviceButton*,bool))); |
336 | 336 | ||
337 | 337 | ||
338 | connect( kf, SIGNAL(backlight()), this, SLOT(toggleLight()) ); | 338 | connect( kf, SIGNAL(backlight()), this, SLOT(toggleLight()) ); |
339 | 339 | ||
340 | connect( this, SIGNAL(power() ), | 340 | connect( this, SIGNAL(power() ), |
341 | SLOT(togglePower() ) ); | 341 | SLOT(togglePower() ) ); |
342 | 342 | ||
343 | rereadVolumes(); | 343 | rereadVolumes(); |
344 | 344 | ||
345 | serverApp = this; | 345 | serverApp = this; |
346 | 346 | ||
347 | apmTimeout(); | 347 | apmTimeout(); |
348 | grabKeyboard(); | 348 | grabKeyboard(); |
349 | 349 | ||
350 | /* make sure the event filter is installed */ | 350 | /* make sure the event filter is installed */ |
351 | const Opie::ODeviceButton* but = Opie::ODevice::inst()->buttonForKeycode( -1 ); | 351 | const Opie::ODeviceButton* but = Opie::ODevice::inst()->buttonForKeycode( -1 ); |
352 | } | 352 | } |
353 | 353 | ||
354 | 354 | ||
355 | ServerApplication::~ServerApplication() | 355 | ServerApplication::~ServerApplication() |
356 | { | 356 | { |
357 | ungrabKeyboard(); | 357 | ungrabKeyboard(); |
358 | 358 | ||
359 | 359 | ||
360 | delete pa; | 360 | delete pa; |
361 | delete m_ps; | 361 | delete m_ps; |
362 | delete m_ps_last; | 362 | delete m_ps_last; |
363 | } | 363 | } |
364 | 364 | ||
365 | void ServerApplication::apmTimeout() { | 365 | void ServerApplication::apmTimeout() { |
366 | serverApp-> checkMemory( ); // in case no events are generated | 366 | serverApp-> checkMemory( ); // in case no events are generated |
367 | *m_ps_last = *m_ps; | 367 | *m_ps_last = *m_ps; |
368 | *m_ps = PowerStatusManager::readStatus(); | 368 | *m_ps = PowerStatusManager::readStatus(); |
369 | 369 | ||
370 | if ( m_ps->acStatus() != m_ps_last-> acStatus() ) | 370 | if ( m_ps->acStatus() != m_ps_last-> acStatus() ) |
371 | m_screensaver-> powerStatusChanged( *m_ps ); | 371 | m_screensaver-> powerStatusChanged( *m_ps ); |
372 | 372 | ||
373 | if ( m_ps->acStatus() == PowerStatus::Online ) { | 373 | if ( m_ps->acStatus() == PowerStatus::Online ) { |
374 | return; | 374 | return; |
375 | } | 375 | } |
376 | 376 | ||
377 | int bat = m_ps-> batteryPercentRemaining(); | 377 | int bat = m_ps-> batteryPercentRemaining(); |
378 | 378 | ||
379 | if ( bat < m_ps_last-> batteryPercentRemaining() ) { | 379 | if ( bat < m_ps_last-> batteryPercentRemaining() ) { |
380 | if ( bat <= m_powerCritical ) { | 380 | if ( bat <= m_powerCritical ) { |
381 | QMessageBox battlow( | 381 | QMessageBox battlow( |
382 | tr("WARNING"), | 382 | tr("WARNING"), |
383 | tr("<p>The battery level is critical!" | 383 | tr("<p>The battery level is critical!" |
384 | "<p>Keep power off until AC is restored"), | 384 | "<p>Keep power off until AC is restored"), |
385 | QMessageBox::Warning, | 385 | QMessageBox::Warning, |
386 | QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton, | 386 | QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton, |
387 | 0, QString::null, TRUE, WStyle_StaysOnTop); | 387 | 0, QString::null, TRUE, WStyle_StaysOnTop); |
388 | battlow.setButtonText(QMessageBox::Cancel, tr("Ok")); | 388 | battlow.setButtonText(QMessageBox::Cancel, tr("Ok")); |
389 | battlow.exec(); | 389 | battlow.exec(); |
390 | } else if ( bat <= m_powerVeryLow ) | 390 | } else if ( bat <= m_powerVeryLow ) |
391 | pa->alert( tr( "The battery is running very low. "), 2 ); | 391 | pa->alert( tr( "The battery is running very low. "), 2 ); |
392 | } | 392 | } |
393 | 393 | ||
394 | if ( m_ps-> backupBatteryStatus() == PowerStatus::VeryLow ) { | 394 | if ( m_ps-> backupBatteryStatus() == PowerStatus::VeryLow ) { |
395 | QMessageBox battlow( | 395 | QMessageBox battlow( |
396 | tr("WARNING"), | 396 | tr("WARNING"), |
397 | tr("<p>The Back-up battery is very low" | 397 | tr("<p>The Back-up battery is very low" |
398 | "<p>Please charge the back-up battery"), | 398 | "<p>Please charge the back-up battery"), |
399 | QMessageBox::Warning, | 399 | QMessageBox::Warning, |
400 | QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton, | 400 | QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton, |
401 | 0, QString::null, TRUE, WStyle_StaysOnTop); | 401 | 0, QString::null, TRUE, WStyle_StaysOnTop); |
402 | battlow.setButtonText(QMessageBox::Cancel, tr("Ok")); | 402 | battlow.setButtonText(QMessageBox::Cancel, tr("Ok")); |
403 | battlow.exec(); | 403 | battlow.exec(); |
404 | } | 404 | } |
405 | } | 405 | } |
406 | 406 | ||
407 | void ServerApplication::systemMessage( const QCString& msg, | 407 | void ServerApplication::systemMessage( const QCString& msg, |
408 | const QByteArray& data ) { | 408 | const QByteArray& data ) { |
409 | QDataStream stream ( data, IO_ReadOnly ); | 409 | QDataStream stream ( data, IO_ReadOnly ); |
410 | 410 | ||
411 | if ( msg == "setScreenSaverInterval(int)" ) { | 411 | if ( msg == "setScreenSaverInterval(int)" ) { |
diff --git a/core/launcher/shutdownimpl.cpp b/core/launcher/shutdownimpl.cpp index f43a2a3..2731568 100644 --- a/core/launcher/shutdownimpl.cpp +++ b/core/launcher/shutdownimpl.cpp | |||
@@ -13,161 +13,161 @@ | |||
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "shutdownimpl.h" | 21 | #include "shutdownimpl.h" |
22 | 22 | ||
23 | #include <qpe/global.h> | 23 | #include <qpe/global.h> |
24 | #include <qpe/qcopenvelope_qws.h> | 24 | #include <qpe/qcopenvelope_qws.h> |
25 | 25 | ||
26 | #include <qtimer.h> | 26 | #include <qtimer.h> |
27 | #include <qprogressbar.h> | 27 | #include <qprogressbar.h> |
28 | #include <qpushbutton.h> | 28 | #include <qpushbutton.h> |
29 | #include <qbuttongroup.h> | 29 | #include <qbuttongroup.h> |
30 | #include <qlabel.h> | 30 | #include <qlabel.h> |
31 | #include <qlayout.h> | 31 | #include <qlayout.h> |
32 | 32 | ||
33 | 33 | ||
34 | static void changeButtonColor ( QPushButton *btn, const QColor &col ) | 34 | static void changeButtonColor ( QPushButton *btn, const QColor &col ) |
35 | { | 35 | { |
36 | QPalette pal = btn-> palette ( ); | 36 | QPalette pal = btn-> palette ( ); |
37 | 37 | ||
38 | pal. setColor ( QPalette::Active, QColorGroup::Button, col ); | 38 | pal. setColor ( QPalette::Active, QColorGroup::Button, col ); |
39 | pal. setColor ( QPalette::Disabled, QColorGroup::Button, col ); | 39 | pal. setColor ( QPalette::Disabled, QColorGroup::Button, col ); |
40 | pal. setColor ( QPalette::Inactive, QColorGroup::Button, col ); | 40 | pal. setColor ( QPalette::Inactive, QColorGroup::Button, col ); |
41 | 41 | ||
42 | btn-> setPalette ( pal ); | 42 | btn-> setPalette ( pal ); |
43 | } | 43 | } |
44 | 44 | ||
45 | 45 | ||
46 | ShutdownImpl::ShutdownImpl( QWidget* parent, const char *name, WFlags fl ) | 46 | ShutdownImpl::ShutdownImpl( QWidget* parent, const char *name, WFlags fl ) |
47 | : QWidget ( parent, name, fl ) | 47 | : QWidget ( parent, name, fl ) |
48 | { | 48 | { |
49 | setCaption ( tr( "Shutdown..." ) ); | 49 | setCaption ( tr( "Shutdown..." ) ); |
50 | 50 | ||
51 | QVBoxLayout *vbox = new QVBoxLayout ( this ); | 51 | QVBoxLayout *vbox = new QVBoxLayout ( this ); |
52 | vbox-> setSpacing ( 3 ); | 52 | vbox-> setSpacing ( 3 ); |
53 | vbox-> setMargin ( 6 ); | 53 | vbox-> setMargin ( 6 ); |
54 | 54 | ||
55 | QButtonGroup *btngrp = new QButtonGroup ( this ); | 55 | QButtonGroup *btngrp = new QButtonGroup ( this ); |
56 | 56 | ||
57 | btngrp-> setTitle ( tr( "Terminate" ) ); | 57 | btngrp-> setTitle ( tr( "Terminate" ) ); |
58 | btngrp-> setColumnLayout ( 0, Qt::Vertical ); | 58 | btngrp-> setColumnLayout ( 0, Qt::Vertical ); |
59 | btngrp-> layout ( ) -> setSpacing ( 0 ); | 59 | btngrp-> layout ( ) -> setSpacing ( 0 ); |
60 | btngrp-> layout ( ) -> setMargin ( 0 ); | 60 | btngrp-> layout ( ) -> setMargin ( 0 ); |
61 | 61 | ||
62 | QGridLayout *grid = new QGridLayout ( btngrp-> layout ( ) ); | 62 | QGridLayout *grid = new QGridLayout ( btngrp-> layout ( ) ); |
63 | grid-> setAlignment ( Qt::AlignTop ); | 63 | grid-> setAlignment ( Qt::AlignTop ); |
64 | grid-> setSpacing ( 3 ); | 64 | grid-> setSpacing ( 3 ); |
65 | grid-> setMargin ( 7 ); | 65 | grid-> setMargin ( 7 ); |
66 | 66 | ||
67 | QPushButton *quit = new QPushButton ( tr( "Terminate Opie" ), btngrp, "quit" ); | 67 | QPushButton *quit = new QPushButton ( tr( "Terminate Opie" ), btngrp, "quit" ); |
68 | changeButtonColor ( quit, QColor ( 236, 236, 179 ) ); | 68 | changeButtonColor ( quit, QColor ( 236, 236, 179 ) ); |
69 | btngrp-> insert ( quit, 4 ); | 69 | btngrp-> insert ( quit, 4 ); |
70 | grid-> addWidget ( quit, 1, 1 ); | 70 | grid-> addWidget ( quit, 1, 1 ); |
71 | 71 | ||
72 | QPushButton *reboot = new QPushButton ( tr( "Reboot" ), btngrp, "reboot" ); | 72 | QPushButton *reboot = new QPushButton ( tr( "Reboot" ), btngrp, "reboot" ); |
73 | changeButtonColor ( reboot, QColor( 236, 183, 181 ) ); | 73 | changeButtonColor ( reboot, QColor( 236, 183, 181 ) ); |
74 | btngrp-> insert ( reboot, 2 ); | 74 | btngrp-> insert ( reboot, 2 ); |
75 | grid-> addWidget( reboot, 1, 0 ); | 75 | grid-> addWidget( reboot, 1, 0 ); |
76 | 76 | ||
77 | QPushButton *restart = new QPushButton ( tr( "Restart Opie" ), btngrp, "restart" ); | 77 | QPushButton *restart = new QPushButton ( tr( "Restart Opie" ), btngrp, "restart" ); |
78 | changeButtonColor ( restart, QColor( 236, 236, 179 ) ); | 78 | changeButtonColor ( restart, QColor( 236, 236, 179 ) ); |
79 | btngrp-> insert ( restart, 3 ); | 79 | btngrp-> insert ( restart, 3 ); |
80 | grid-> addWidget ( restart, 0, 1 ); | 80 | grid-> addWidget ( restart, 0, 1 ); |
81 | 81 | ||
82 | QPushButton *shutdown = new QPushButton( tr( "Shutdown" ), btngrp, "shutdown" ); | 82 | QPushButton *shutdown = new QPushButton( tr( "Shutdown" ), btngrp, "shutdown" ); |
83 | changeButtonColor ( shutdown, QColor( 236, 183, 181 ) ); | 83 | changeButtonColor ( shutdown, QColor( 236, 183, 181 ) ); |
84 | btngrp-> insert ( shutdown, 1 ); | 84 | btngrp-> insert ( shutdown, 1 ); |
85 | grid-> addWidget ( shutdown, 0, 0 ); | 85 | grid-> addWidget ( shutdown, 0, 0 ); |
86 | 86 | ||
87 | vbox-> addWidget ( btngrp ); | 87 | vbox-> addWidget ( btngrp ); |
88 | 88 | ||
89 | m_info = new QLabel ( this, "info" ); | 89 | m_info = new QLabel ( this, "info" ); |
90 | m_info-> setText( tr( "<p>\n" "These termination options are provided primarily for use while developing and testing the Opie system. In a normal environment, these concepts are unnecessary." ) ); | 90 | m_info-> setText( tr( "<p>\n" "These termination options are provided primarily for use while developing and testing the Opie system. In a normal environment, these concepts are unnecessary." ) ); |
91 | vbox-> addWidget ( m_info ); | 91 | vbox-> addWidget ( m_info ); |
92 | 92 | ||
93 | m_progress = new QProgressBar ( this, "progressBar" ); | 93 | m_progress = new QProgressBar ( this, "progressBar" ); |
94 | m_progress-> setFrameShape ( QProgressBar::Panel ); | 94 | m_progress-> setFrameShape ( QProgressBar::Panel ); |
95 | m_progress-> setFrameShadow ( QProgressBar::Sunken ); | 95 | m_progress-> setFrameShadow ( QProgressBar::Sunken ); |
96 | m_progress-> setTotalSteps ( 20 ); | 96 | m_progress-> setTotalSteps ( 20 ); |
97 | m_progress-> setIndicatorFollowsStyle ( false ); | 97 | m_progress-> setIndicatorFollowsStyle ( false ); |
98 | vbox-> addWidget ( m_progress ); | 98 | vbox-> addWidget ( m_progress ); |
99 | 99 | ||
100 | vbox-> addItem ( new QSpacerItem ( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); | 100 | vbox-> addItem ( new QSpacerItem ( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); |
101 | 101 | ||
102 | QPushButton *cancel = new QPushButton ( tr( "Cancel" ), this, "cancel" ); | 102 | QPushButton *cancel = new QPushButton ( tr( "Cancel" ), this, "cancel" ); |
103 | changeButtonColor ( cancel, QColor( 181, 222, 178 ) ); | 103 | changeButtonColor ( cancel, QColor( 181, 222, 178 ) ); |
104 | cancel-> setDefault ( true ); | 104 | cancel-> setDefault ( true ); |
105 | cancel-> setSizePolicy ( QSizePolicy ( QSizePolicy::Minimum, QSizePolicy::Expanding, cancel-> sizePolicy ( ). hasHeightForWidth ( ) ) ); | 105 | cancel-> setSizePolicy ( QSizePolicy ( QSizePolicy::Minimum, QSizePolicy::Expanding, cancel-> sizePolicy ( ). hasHeightForWidth ( ) ) ); |
106 | vbox-> addWidget ( cancel ); | 106 | vbox-> addWidget ( cancel ); |
107 | 107 | ||
108 | m_timer = new QTimer ( this ); | 108 | m_timer = new QTimer ( this ); |
109 | connect ( m_timer, SIGNAL( timeout ( ) ), this, SLOT( timeout ( ) ) ); | 109 | connect ( m_timer, SIGNAL( timeout() ), this, SLOT( timeout() ) ); |
110 | 110 | ||
111 | connect ( btngrp, SIGNAL( clicked ( int ) ), this, SLOT( buttonClicked ( int ) ) ); | 111 | connect ( btngrp, SIGNAL( clicked(int) ), this, SLOT( buttonClicked(int) ) ); |
112 | connect ( cancel, SIGNAL( clicked ( ) ), this, SLOT( cancelClicked ( ) ) ); | 112 | connect ( cancel, SIGNAL( clicked() ), this, SLOT( cancelClicked() ) ); |
113 | 113 | ||
114 | m_progress-> hide ( ); | 114 | m_progress-> hide ( ); |
115 | Global::hideInputMethod ( ); | 115 | Global::hideInputMethod ( ); |
116 | } | 116 | } |
117 | 117 | ||
118 | void ShutdownImpl::buttonClicked ( int b ) | 118 | void ShutdownImpl::buttonClicked ( int b ) |
119 | { | 119 | { |
120 | m_counter = 0; | 120 | m_counter = 0; |
121 | 121 | ||
122 | switch ( b ) { | 122 | switch ( b ) { |
123 | case 1: | 123 | case 1: |
124 | m_operation = ShutdownSystem; | 124 | m_operation = ShutdownSystem; |
125 | break; | 125 | break; |
126 | case 2: | 126 | case 2: |
127 | m_operation = RebootSystem; | 127 | m_operation = RebootSystem; |
128 | break; | 128 | break; |
129 | case 3: | 129 | case 3: |
130 | m_operation = RestartDesktop; | 130 | m_operation = RestartDesktop; |
131 | break; | 131 | break; |
132 | case 4: | 132 | case 4: |
133 | m_operation = TerminateDesktop; | 133 | m_operation = TerminateDesktop; |
134 | break; | 134 | break; |
135 | } | 135 | } |
136 | m_info-> hide ( ); | 136 | m_info-> hide ( ); |
137 | m_progress-> show ( ); | 137 | m_progress-> show ( ); |
138 | m_timer-> start ( 300 ); | 138 | m_timer-> start ( 300 ); |
139 | timeout ( ); | 139 | timeout ( ); |
140 | } | 140 | } |
141 | 141 | ||
142 | void ShutdownImpl::cancelClicked ( ) | 142 | void ShutdownImpl::cancelClicked ( ) |
143 | { | 143 | { |
144 | m_progress-> hide ( ); | 144 | m_progress-> hide ( ); |
145 | m_info-> show ( ); | 145 | m_info-> show ( ); |
146 | if ( m_timer-> isActive ( ) ) | 146 | if ( m_timer-> isActive ( ) ) |
147 | m_timer-> stop ( ); | 147 | m_timer-> stop ( ); |
148 | else | 148 | else |
149 | close ( ); | 149 | close ( ); |
150 | } | 150 | } |
151 | 151 | ||
152 | void ShutdownImpl::timeout ( ) | 152 | void ShutdownImpl::timeout ( ) |
153 | { | 153 | { |
154 | if ( ( m_counter += 2 ) > m_progress-> totalSteps ( ) ) { | 154 | if ( ( m_counter += 2 ) > m_progress-> totalSteps ( ) ) { |
155 | m_progress-> hide ( ); | 155 | m_progress-> hide ( ); |
156 | m_timer-> stop ( ); | 156 | m_timer-> stop ( ); |
157 | emit shutdown ( m_operation ); | 157 | emit shutdown ( m_operation ); |
158 | } | 158 | } |
159 | else | 159 | else |
160 | m_progress-> setProgress ( m_counter ); | 160 | m_progress-> setProgress ( m_counter ); |
161 | } | 161 | } |
162 | 162 | ||
163 | void ShutdownImpl::hide ( ) | 163 | void ShutdownImpl::hide ( ) |
164 | { | 164 | { |
165 | if ( isVisible ( )) { | 165 | if ( isVisible ( )) { |
166 | // hack - shutdown is a launcher dialog, but treated like a standalone app | 166 | // hack - shutdown is a launcher dialog, but treated like a standalone app |
167 | QCopEnvelope e( "QPE/System", "closing(QString)" ); | 167 | QCopEnvelope e( "QPE/System", "closing(QString)" ); |
168 | e << QString ( "shutdown" ); | 168 | e << QString ( "shutdown" ); |
169 | 169 | ||
170 | } | 170 | } |
171 | QWidget::hide ( ); | 171 | QWidget::hide ( ); |
172 | } | 172 | } |
173 | 173 | ||
diff --git a/core/launcher/taskbar.cpp b/core/launcher/taskbar.cpp index 491a8a3..91e2f20 100644 --- a/core/launcher/taskbar.cpp +++ b/core/launcher/taskbar.cpp | |||
@@ -120,194 +120,194 @@ QSize SafeMode::sizeHint() const | |||
120 | return QSize( fm.width(message), fm.height() ); | 120 | return QSize( fm.width(message), fm.height() ); |
121 | } | 121 | } |
122 | 122 | ||
123 | void SafeMode::paintEvent( QPaintEvent* ) | 123 | void SafeMode::paintEvent( QPaintEvent* ) |
124 | { | 124 | { |
125 | QPainter p(this); | 125 | QPainter p(this); |
126 | p.drawText( rect(), AlignCenter, message ); | 126 | p.drawText( rect(), AlignCenter, message ); |
127 | } | 127 | } |
128 | 128 | ||
129 | //--------------------------------------------------------------------------- | 129 | //--------------------------------------------------------------------------- |
130 | 130 | ||
131 | class LockKeyState : public QWidget | 131 | class LockKeyState : public QWidget |
132 | { | 132 | { |
133 | public: | 133 | public: |
134 | LockKeyState( QWidget *parent ) : | 134 | LockKeyState( QWidget *parent ) : |
135 | QWidget(parent), | 135 | QWidget(parent), |
136 | nl(initNumLock()), cl(FALSE) | 136 | nl(initNumLock()), cl(FALSE) |
137 | { | 137 | { |
138 | nl_pm = Resource::loadPixmap("numlock"); | 138 | nl_pm = Resource::loadPixmap("numlock"); |
139 | cl_pm = Resource::loadPixmap("capslock"); | 139 | cl_pm = Resource::loadPixmap("capslock"); |
140 | } | 140 | } |
141 | QSize sizeHint() const | 141 | QSize sizeHint() const |
142 | { | 142 | { |
143 | return QSize(nl_pm.width()+2,nl_pm.width()+nl_pm.height()+1); | 143 | return QSize(nl_pm.width()+2,nl_pm.width()+nl_pm.height()+1); |
144 | } | 144 | } |
145 | void toggleNumLockState() | 145 | void toggleNumLockState() |
146 | { | 146 | { |
147 | nl = !nl; repaint(); | 147 | nl = !nl; repaint(); |
148 | } | 148 | } |
149 | void toggleCapsLockState() | 149 | void toggleCapsLockState() |
150 | { | 150 | { |
151 | cl = !cl; repaint(); | 151 | cl = !cl; repaint(); |
152 | } | 152 | } |
153 | void paintEvent( QPaintEvent * ) | 153 | void paintEvent( QPaintEvent * ) |
154 | { | 154 | { |
155 | int y = (height()-sizeHint().height())/2; | 155 | int y = (height()-sizeHint().height())/2; |
156 | QPainter p(this); | 156 | QPainter p(this); |
157 | if ( nl ) | 157 | if ( nl ) |
158 | p.drawPixmap(1,y,nl_pm); | 158 | p.drawPixmap(1,y,nl_pm); |
159 | if ( cl ) | 159 | if ( cl ) |
160 | p.drawPixmap(1,y+nl_pm.height()+1,cl_pm); | 160 | p.drawPixmap(1,y+nl_pm.height()+1,cl_pm); |
161 | } | 161 | } |
162 | private: | 162 | private: |
163 | QPixmap nl_pm, cl_pm; | 163 | QPixmap nl_pm, cl_pm; |
164 | bool nl, cl; | 164 | bool nl, cl; |
165 | }; | 165 | }; |
166 | 166 | ||
167 | //--------------------------------------------------------------------------- | 167 | //--------------------------------------------------------------------------- |
168 | 168 | ||
169 | TaskBar::~TaskBar() | 169 | TaskBar::~TaskBar() |
170 | { | 170 | { |
171 | } | 171 | } |
172 | 172 | ||
173 | 173 | ||
174 | TaskBar::TaskBar() : QHBox(0, 0, WStyle_Customize | WStyle_Tool | WStyle_StaysOnTop | WGroupLeader) | 174 | TaskBar::TaskBar() : QHBox(0, 0, WStyle_Customize | WStyle_Tool | WStyle_StaysOnTop | WGroupLeader) |
175 | { | 175 | { |
176 | Config cfg( "Launcher" ); | 176 | Config cfg( "Launcher" ); |
177 | cfg.setGroup( "InputMethods" ); | 177 | cfg.setGroup( "InputMethods" ); |
178 | resizeRunningApp = cfg.readBoolEntry( "Resize", true ); | 178 | resizeRunningApp = cfg.readBoolEntry( "Resize", true ); |
179 | 179 | ||
180 | sm = new StartMenu( this ); | 180 | sm = new StartMenu( this ); |
181 | connect( sm, SIGNAL(tabSelected(const QString&)), this, | 181 | connect( sm, SIGNAL(tabSelected(const QString&)), this, |
182 | SIGNAL(tabSelected(const QString&)) ); | 182 | SIGNAL(tabSelected(const QString&)) ); |
183 | 183 | ||
184 | inputMethods = new InputMethods( this ); | 184 | inputMethods = new InputMethods( this ); |
185 | connect( inputMethods, SIGNAL(inputToggled(bool)), | 185 | connect( inputMethods, SIGNAL(inputToggled(bool)), |
186 | this, SLOT(calcMaxWindowRect()) ); | 186 | this, SLOT(calcMaxWindowRect()) ); |
187 | 187 | ||
188 | stack = new QWidgetStack( this ); | 188 | stack = new QWidgetStack( this ); |
189 | stack->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ) ); | 189 | stack->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ) ); |
190 | label = new QLabel(stack); | 190 | label = new QLabel(stack); |
191 | 191 | ||
192 | runningAppBar = new RunningAppBar(stack); | 192 | runningAppBar = new RunningAppBar(stack); |
193 | stack->raiseWidget(runningAppBar); | 193 | stack->raiseWidget(runningAppBar); |
194 | 194 | ||
195 | waitIcon = new Wait( this ); | 195 | waitIcon = new Wait( this ); |
196 | (void) new AppIcons( this ); | 196 | (void) new AppIcons( this ); |
197 | 197 | ||
198 | sysTray = new SysTray( this ); | 198 | sysTray = new SysTray( this ); |
199 | 199 | ||
200 | /* ### FIXME plugin loader and safe mode */ | 200 | /* ### FIXME plugin loader and safe mode */ |
201 | #if 0 | 201 | #if 0 |
202 | if (PluginLoader::inSafeMode()) | 202 | if (PluginLoader::inSafeMode()) |
203 | (void)new SafeMode( this ); | 203 | (void)new SafeMode( this ); |
204 | #endif | 204 | #endif |
205 | 205 | ||
206 | // ## make customizable in some way? | 206 | // ## make customizable in some way? |
207 | #ifdef QT_QWS_CUSTOM | 207 | #ifdef QT_QWS_CUSTOM |
208 | lockState = new LockKeyState( this ); | 208 | lockState = new LockKeyState( this ); |
209 | #else | 209 | #else |
210 | lockState = 0; | 210 | lockState = 0; |
211 | #endif | 211 | #endif |
212 | 212 | ||
213 | #if defined(Q_WS_QWS) | 213 | #if defined(Q_WS_QWS) |
214 | #if !defined(QT_NO_COP) | 214 | #if !defined(QT_NO_COP) |
215 | QCopChannel *channel = new QCopChannel( "QPE/TaskBar", this ); | 215 | QCopChannel *channel = new QCopChannel( "QPE/TaskBar", this ); |
216 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), | 216 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
217 | this, SLOT(receive(const QCString&, const QByteArray&)) ); | 217 | this, SLOT(receive(const QCString&,const QByteArray&)) ); |
218 | #endif | 218 | #endif |
219 | #endif | 219 | #endif |
220 | waitTimer = new QTimer( this ); | 220 | waitTimer = new QTimer( this ); |
221 | connect( waitTimer, SIGNAL( timeout() ), this, SLOT( stopWait() ) ); | 221 | connect( waitTimer, SIGNAL( timeout() ), this, SLOT( stopWait() ) ); |
222 | clearer = new QTimer( this ); | 222 | clearer = new QTimer( this ); |
223 | QObject::connect(clearer, SIGNAL(timeout()), SLOT(clearStatusBar())); | 223 | QObject::connect(clearer, SIGNAL(timeout()), SLOT(clearStatusBar())); |
224 | 224 | ||
225 | connect( qApp, SIGNAL(symbol()), this, SLOT(toggleSymbolInput()) ); | 225 | connect( qApp, SIGNAL(symbol()), this, SLOT(toggleSymbolInput()) ); |
226 | connect( qApp, SIGNAL(numLockStateToggle()), this, SLOT(toggleNumLockState()) ); | 226 | connect( qApp, SIGNAL(numLockStateToggle()), this, SLOT(toggleNumLockState()) ); |
227 | connect( qApp, SIGNAL(capsLockStateToggle()), this, SLOT(toggleCapsLockState()) ); | 227 | connect( qApp, SIGNAL(capsLockStateToggle()), this, SLOT(toggleCapsLockState()) ); |
228 | } | 228 | } |
229 | 229 | ||
230 | void TaskBar::setStatusMessage( const QString &text ) | 230 | void TaskBar::setStatusMessage( const QString &text ) |
231 | { | 231 | { |
232 | if ( !text.isEmpty() ) { | 232 | if ( !text.isEmpty() ) { |
233 | label->setText( text ); | 233 | label->setText( text ); |
234 | stack->raiseWidget( label ); | 234 | stack->raiseWidget( label ); |
235 | if ( sysTray && ( label->fontMetrics().width( text ) > label->width() ) ) | 235 | if ( sysTray && ( label->fontMetrics().width( text ) > label->width() ) ) |
236 | sysTray->hide(); | 236 | sysTray->hide(); |
237 | clearer->start( 3000, TRUE ); | 237 | clearer->start( 3000, TRUE ); |
238 | } else { | 238 | } else { |
239 | clearStatusBar(); | 239 | clearStatusBar(); |
240 | } | 240 | } |
241 | } | 241 | } |
242 | 242 | ||
243 | void TaskBar::clearStatusBar() | 243 | void TaskBar::clearStatusBar() |
244 | { | 244 | { |
245 | label->clear(); | 245 | label->clear(); |
246 | stack->raiseWidget(runningAppBar); | 246 | stack->raiseWidget(runningAppBar); |
247 | if ( sysTray ) | 247 | if ( sysTray ) |
248 | sysTray->show(); | 248 | sysTray->show(); |
249 | // stack->raiseWidget( mru ); | 249 | // stack->raiseWidget( mru ); |
250 | } | 250 | } |
251 | 251 | ||
252 | void TaskBar::startWait() | 252 | void TaskBar::startWait() |
253 | { | 253 | { |
254 | waitIcon->setWaiting( true ); | 254 | waitIcon->setWaiting( true ); |
255 | // a catchall stop after 10 seconds... | 255 | // a catchall stop after 10 seconds... |
256 | waitTimer->start( 10 * 1000, true ); | 256 | waitTimer->start( 10 * 1000, true ); |
257 | } | 257 | } |
258 | 258 | ||
259 | void TaskBar::stopWait(const QString&) | 259 | void TaskBar::stopWait(const QString&) |
260 | { | 260 | { |
261 | waitTimer->stop(); | 261 | waitTimer->stop(); |
262 | waitIcon->setWaiting( false ); | 262 | waitIcon->setWaiting( false ); |
263 | } | 263 | } |
264 | 264 | ||
265 | void TaskBar::stopWait() | 265 | void TaskBar::stopWait() |
266 | { | 266 | { |
267 | waitTimer->stop(); | 267 | waitTimer->stop(); |
268 | waitIcon->setWaiting( false ); | 268 | waitIcon->setWaiting( false ); |
269 | } | 269 | } |
270 | 270 | ||
271 | /* | 271 | /* |
272 | * This resizeEvent will be captured by | 272 | * This resizeEvent will be captured by |
273 | * the ServerInterface and it'll layout | 273 | * the ServerInterface and it'll layout |
274 | * and calc rect. Now if we go from bigger | 274 | * and calc rect. Now if we go from bigger |
275 | * to smaller screen the SysTray is out of | 275 | * to smaller screen the SysTray is out of |
276 | * bounds and repaint() won't trigger an Event | 276 | * bounds and repaint() won't trigger an Event |
277 | */ | 277 | */ |
278 | void TaskBar::resizeEvent( QResizeEvent *e ) | 278 | void TaskBar::resizeEvent( QResizeEvent *e ) |
279 | { | 279 | { |
280 | if ( sysTray ) | 280 | if ( sysTray ) |
281 | sysTray->hide(); | 281 | sysTray->hide(); |
282 | 282 | ||
283 | QHBox::resizeEvent( e ); | 283 | QHBox::resizeEvent( e ); |
284 | 284 | ||
285 | if ( sysTray ) | 285 | if ( sysTray ) |
286 | sysTray->show(); | 286 | sysTray->show(); |
287 | 287 | ||
288 | qWarning("TaskBar::resize event"); | 288 | qWarning("TaskBar::resize event"); |
289 | } | 289 | } |
290 | 290 | ||
291 | void TaskBar::styleChange( QStyle &s ) | 291 | void TaskBar::styleChange( QStyle &s ) |
292 | { | 292 | { |
293 | QHBox::styleChange( s ); | 293 | QHBox::styleChange( s ); |
294 | calcMaxWindowRect(); | 294 | calcMaxWindowRect(); |
295 | } | 295 | } |
296 | 296 | ||
297 | void TaskBar::calcMaxWindowRect() | 297 | void TaskBar::calcMaxWindowRect() |
298 | { | 298 | { |
299 | if ( resizeRunningApp ) | 299 | if ( resizeRunningApp ) |
300 | { | 300 | { |
301 | #if defined(Q_WS_QWS) | 301 | #if defined(Q_WS_QWS) |
302 | QRect wr; | 302 | QRect wr; |
303 | int displayWidth = qApp->desktop()->width(); | 303 | int displayWidth = qApp->desktop()->width(); |
304 | QRect ir = inputMethods->inputRect(); | 304 | QRect ir = inputMethods->inputRect(); |
305 | if ( ir.isValid() ) { | 305 | if ( ir.isValid() ) { |
306 | wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); | 306 | wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); |
307 | } else { | 307 | } else { |
308 | wr.setCoords( 0, 0, displayWidth-1, y()-1 ); | 308 | wr.setCoords( 0, 0, displayWidth-1, y()-1 ); |
309 | } | 309 | } |
310 | #if QT_VERSION < 0x030000 | 310 | #if QT_VERSION < 0x030000 |
311 | QWSServer::setMaxWindowRect( qt_screen->mapToDevice(wr,QSize(qt_screen->width(),qt_screen->height())) ); | 311 | QWSServer::setMaxWindowRect( qt_screen->mapToDevice(wr,QSize(qt_screen->width(),qt_screen->height())) ); |
312 | #else | 312 | #else |
313 | QWSServer::setMaxWindowRect( wr ); | 313 | QWSServer::setMaxWindowRect( wr ); |
diff --git a/core/launcher/transferserver.cpp b/core/launcher/transferserver.cpp index b998e95..a5e20b2 100644 --- a/core/launcher/transferserver.cpp +++ b/core/launcher/transferserver.cpp | |||
@@ -1,191 +1,191 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | //#define _XOPEN_SOURCE | 20 | //#define _XOPEN_SOURCE |
21 | 21 | ||
22 | #include <opie2/oglobal.h> | 22 | #include <opie2/oglobal.h> |
23 | 23 | ||
24 | #ifndef Q_OS_WIN32 | 24 | #ifndef Q_OS_WIN32 |
25 | #include <pwd.h> | 25 | #include <pwd.h> |
26 | #include <sys/types.h> | 26 | #include <sys/types.h> |
27 | #include <unistd.h> | 27 | #include <unistd.h> |
28 | #include <stdlib.h> | 28 | #include <stdlib.h> |
29 | #include <time.h> | 29 | #include <time.h> |
30 | 30 | ||
31 | #ifndef Q_OS_MACX | 31 | #ifndef Q_OS_MACX |
32 | #include <shadow.h> | 32 | #include <shadow.h> |
33 | #include <crypt.h> | 33 | #include <crypt.h> |
34 | #endif /* Q_OS_MACX */ | 34 | #endif /* Q_OS_MACX */ |
35 | 35 | ||
36 | #else | 36 | #else |
37 | #include <stdlib.h> | 37 | #include <stdlib.h> |
38 | #include <time.h> | 38 | #include <time.h> |
39 | #endif | 39 | #endif |
40 | 40 | ||
41 | 41 | ||
42 | #if defined(_OS_LINUX_) | 42 | #if defined(_OS_LINUX_) |
43 | #include <shadow.h> | 43 | #include <shadow.h> |
44 | #endif | 44 | #endif |
45 | 45 | ||
46 | #include <qtextstream.h> | 46 | #include <qtextstream.h> |
47 | #include <qmessagebox.h> | 47 | #include <qmessagebox.h> |
48 | //#include <qtopia/qcopchannel_qws.h> | 48 | //#include <qtopia/qcopchannel_qws.h> |
49 | #include <qtopia/process.h> | 49 | #include <qtopia/process.h> |
50 | #include <qtopia/private/contact.h> | 50 | #include <qtopia/private/contact.h> |
51 | #include <qtopia/version.h> | 51 | #include <qtopia/version.h> |
52 | #ifdef Q_WS_QWS | 52 | #ifdef Q_WS_QWS |
53 | #include <qtopia/qcopenvelope_qws.h> | 53 | #include <qtopia/qcopenvelope_qws.h> |
54 | #endif | 54 | #endif |
55 | 55 | ||
56 | 56 | ||
57 | #include "transferserver.h" | 57 | #include "transferserver.h" |
58 | #include <qtopia/qprocess.h> | 58 | #include <qtopia/qprocess.h> |
59 | 59 | ||
60 | const int block_size = 51200; | 60 | const int block_size = 51200; |
61 | 61 | ||
62 | TransferServer::TransferServer( Q_UINT16 port, QObject *parent, | 62 | TransferServer::TransferServer( Q_UINT16 port, QObject *parent, |
63 | const char* name) | 63 | const char* name) |
64 | : QServerSocket( port, 1, parent, name ) | 64 | : QServerSocket( port, 1, parent, name ) |
65 | { | 65 | { |
66 | connections.setAutoDelete( TRUE ); | 66 | connections.setAutoDelete( TRUE ); |
67 | if ( !ok() ) | 67 | if ( !ok() ) |
68 | qWarning( "Failed to bind to port %d", port ); | 68 | qWarning( "Failed to bind to port %d", port ); |
69 | } | 69 | } |
70 | 70 | ||
71 | void TransferServer::authorizeConnections() | 71 | void TransferServer::authorizeConnections() |
72 | { | 72 | { |
73 | QListIterator<ServerPI> it(connections); | 73 | QListIterator<ServerPI> it(connections); |
74 | while ( it.current() ) { | 74 | while ( it.current() ) { |
75 | if ( !it.current()->verifyAuthorised() ) { | 75 | if ( !it.current()->verifyAuthorised() ) { |
76 | disconnect( it.current(), SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) ); | 76 | disconnect( it.current(), SIGNAL(connectionClosed(ServerPI*)), this, SLOT( closed(ServerPI*)) ); |
77 | connections.removeRef( it.current() ); | 77 | connections.removeRef( it.current() ); |
78 | } else | 78 | } else |
79 | ++it; | 79 | ++it; |
80 | } | 80 | } |
81 | } | 81 | } |
82 | 82 | ||
83 | void TransferServer::closed(ServerPI *item) | 83 | void TransferServer::closed(ServerPI *item) |
84 | { | 84 | { |
85 | connections.removeRef(item); | 85 | connections.removeRef(item); |
86 | } | 86 | } |
87 | 87 | ||
88 | TransferServer::~TransferServer() | 88 | TransferServer::~TransferServer() |
89 | { | 89 | { |
90 | } | 90 | } |
91 | 91 | ||
92 | void TransferServer::newConnection( int socket ) | 92 | void TransferServer::newConnection( int socket ) |
93 | { | 93 | { |
94 | ServerPI *ptr = new ServerPI( socket, this ); | 94 | ServerPI *ptr = new ServerPI( socket, this ); |
95 | connect( ptr, SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) ); | 95 | connect( ptr, SIGNAL(connectionClosed(ServerPI*)), this, SLOT( closed(ServerPI*)) ); |
96 | connections.append( ptr ); | 96 | connections.append( ptr ); |
97 | } | 97 | } |
98 | 98 | ||
99 | QString SyncAuthentication::serverId() | 99 | QString SyncAuthentication::serverId() |
100 | { | 100 | { |
101 | Config cfg("Security"); | 101 | Config cfg("Security"); |
102 | cfg.setGroup("Sync"); | 102 | cfg.setGroup("Sync"); |
103 | QString r = cfg.readEntry("serverid"); | 103 | QString r = cfg.readEntry("serverid"); |
104 | 104 | ||
105 | if ( r.isEmpty() ) { | 105 | if ( r.isEmpty() ) { |
106 | r = OGlobal::generateUuid(); | 106 | r = OGlobal::generateUuid(); |
107 | cfg.writeEntry("serverid", r ); | 107 | cfg.writeEntry("serverid", r ); |
108 | } | 108 | } |
109 | return r; | 109 | return r; |
110 | } | 110 | } |
111 | 111 | ||
112 | QString SyncAuthentication::ownerName() | 112 | QString SyncAuthentication::ownerName() |
113 | { | 113 | { |
114 | QString vfilename = Global::applicationFileName("addressbook", | 114 | QString vfilename = Global::applicationFileName("addressbook", |
115 | "businesscard.vcf"); | 115 | "businesscard.vcf"); |
116 | if (QFile::exists(vfilename)) { | 116 | if (QFile::exists(vfilename)) { |
117 | Contact c; | 117 | Contact c; |
118 | c = Contact::readVCard( vfilename )[0]; | 118 | c = Contact::readVCard( vfilename )[0]; |
119 | return c.fullName(); | 119 | return c.fullName(); |
120 | } | 120 | } |
121 | 121 | ||
122 | return QString::null; | 122 | return QString::null; |
123 | } | 123 | } |
124 | 124 | ||
125 | QString SyncAuthentication::loginName() | 125 | QString SyncAuthentication::loginName() |
126 | { | 126 | { |
127 | struct passwd *pw = 0L; | 127 | struct passwd *pw = 0L; |
128 | #ifndef Q_OS_WIN32 | 128 | #ifndef Q_OS_WIN32 |
129 | pw = getpwuid( geteuid() ); | 129 | pw = getpwuid( geteuid() ); |
130 | return QString::fromLocal8Bit( pw->pw_name ); | 130 | return QString::fromLocal8Bit( pw->pw_name ); |
131 | #else | 131 | #else |
132 | //### revise | 132 | //### revise |
133 | return QString(); | 133 | return QString(); |
134 | #endif | 134 | #endif |
135 | } | 135 | } |
136 | 136 | ||
137 | int SyncAuthentication::isAuthorized(QHostAddress peeraddress) | 137 | int SyncAuthentication::isAuthorized(QHostAddress peeraddress) |
138 | { | 138 | { |
139 | Config cfg("Security"); | 139 | Config cfg("Security"); |
140 | cfg.setGroup("Sync"); | 140 | cfg.setGroup("Sync"); |
141 | // QString allowedstr = cfg.readEntry("auth_peer","192.168.1.0"); | 141 | // QString allowedstr = cfg.readEntry("auth_peer","192.168.1.0"); |
142 | uint auth_peer = cfg.readNumEntry("auth_peer", 0xc0a80100); | 142 | uint auth_peer = cfg.readNumEntry("auth_peer", 0xc0a80100); |
143 | 143 | ||
144 | // QHostAddress allowed; | 144 | // QHostAddress allowed; |
145 | // allowed.setAddress(allowedstr); | 145 | // allowed.setAddress(allowedstr); |
146 | // uint auth_peer = allowed.ip4Addr(); | 146 | // uint auth_peer = allowed.ip4Addr(); |
147 | uint auth_peer_bits = cfg.readNumEntry("auth_peer_bits", 24); | 147 | uint auth_peer_bits = cfg.readNumEntry("auth_peer_bits", 24); |
148 | uint mask = auth_peer_bits >= 32 // shifting by 32 is not defined | 148 | uint mask = auth_peer_bits >= 32 // shifting by 32 is not defined |
149 | ? 0xffffffff : (((1 << auth_peer_bits) - 1) << (32 - auth_peer_bits)); | 149 | ? 0xffffffff : (((1 << auth_peer_bits) - 1) << (32 - auth_peer_bits)); |
150 | 150 | ||
151 | return (peeraddress.ip4Addr() & mask) == auth_peer; | 151 | return (peeraddress.ip4Addr() & mask) == auth_peer; |
152 | } | 152 | } |
153 | 153 | ||
154 | bool SyncAuthentication::checkUser( const QString& user ) | 154 | bool SyncAuthentication::checkUser( const QString& user ) |
155 | { | 155 | { |
156 | if ( user.isEmpty() ) return FALSE; | 156 | if ( user.isEmpty() ) return FALSE; |
157 | QString euser = loginName(); | 157 | QString euser = loginName(); |
158 | return user == euser; | 158 | return user == euser; |
159 | } | 159 | } |
160 | 160 | ||
161 | bool SyncAuthentication::checkPassword( const QString& password ) | 161 | bool SyncAuthentication::checkPassword( const QString& password ) |
162 | { | 162 | { |
163 | #ifdef ALLOW_UNIX_USER_FTP | 163 | #ifdef ALLOW_UNIX_USER_FTP |
164 | // First, check system password... | 164 | // First, check system password... |
165 | 165 | ||
166 | struct passwd *pw = 0; | 166 | struct passwd *pw = 0; |
167 | struct spwd *spw = 0; | 167 | struct spwd *spw = 0; |
168 | 168 | ||
169 | pw = getpwuid( geteuid() ); | 169 | pw = getpwuid( geteuid() ); |
170 | spw = getspnam( pw->pw_name ); | 170 | spw = getspnam( pw->pw_name ); |
171 | 171 | ||
172 | QString cpwd = QString::fromLocal8Bit( pw->pw_passwd ); | 172 | QString cpwd = QString::fromLocal8Bit( pw->pw_passwd ); |
173 | if ( cpwd == "x" && spw ) | 173 | if ( cpwd == "x" && spw ) |
174 | cpwd = QString::fromLocal8Bit( spw->sp_pwdp ); | 174 | cpwd = QString::fromLocal8Bit( spw->sp_pwdp ); |
175 | 175 | ||
176 | // Note: some systems use more than crypt for passwords. | 176 | // Note: some systems use more than crypt for passwords. |
177 | QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) ); | 177 | QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) ); |
178 | if ( cpwd == cpassword ) | 178 | if ( cpwd == cpassword ) |
179 | return TRUE; | 179 | return TRUE; |
180 | #endif | 180 | #endif |
181 | 181 | ||
182 | static int lastdenial=0; | 182 | static int lastdenial=0; |
183 | static int denials=0; | 183 | static int denials=0; |
184 | int now = time(0); | 184 | int now = time(0); |
185 | 185 | ||
186 | Config cfg("Security"); | 186 | Config cfg("Security"); |
187 | cfg.setGroup("SyncMode"); | 187 | cfg.setGroup("SyncMode"); |
188 | int mode = cfg.readNumEntry("Mode", 0x02 ); | 188 | int mode = cfg.readNumEntry("Mode", 0x02 ); |
189 | 189 | ||
190 | //No pass word needed if the user really needs it | 190 | //No pass word needed if the user really needs it |
191 | if (mode & 0x04) { | 191 | if (mode & 0x04) { |
@@ -240,205 +240,205 @@ bool SyncAuthentication::checkPassword( const QString& password ) | |||
240 | 240 | ||
241 | /* | 241 | /* |
242 | * we need to support old Sync software and QtopiaDesktop | 242 | * we need to support old Sync software and QtopiaDesktop |
243 | */ | 243 | */ |
244 | if ( password.left(6) == "Qtopia" || password.left(6) == "rootme" ) { | 244 | if ( password.left(6) == "Qtopia" || password.left(6) == "rootme" ) { |
245 | Config cfg( "Security" ); | 245 | Config cfg( "Security" ); |
246 | cfg.setGroup("Sync"); | 246 | cfg.setGroup("Sync"); |
247 | QStringList pwds = cfg.readListEntry("Passwords",' '); | 247 | QStringList pwds = cfg.readListEntry("Passwords",' '); |
248 | for (QStringList::ConstIterator it=pwds.begin(); it!=pwds.end(); ++it) { | 248 | for (QStringList::ConstIterator it=pwds.begin(); it!=pwds.end(); ++it) { |
249 | #ifndef Q_OS_WIN32 | 249 | #ifndef Q_OS_WIN32 |
250 | QString cpassword = QString::fromLocal8Bit( | 250 | QString cpassword = QString::fromLocal8Bit( |
251 | crypt( password.mid(8).local8Bit(), (*it).left(2).latin1() ) ); | 251 | crypt( password.mid(8).local8Bit(), (*it).left(2).latin1() ) ); |
252 | #else | 252 | #else |
253 | // ### revise | 253 | // ### revise |
254 | QString cpassword(""); | 254 | QString cpassword(""); |
255 | #endif | 255 | #endif |
256 | if ( *it == cpassword ) { | 256 | if ( *it == cpassword ) { |
257 | lock--; | 257 | lock--; |
258 | return TRUE; | 258 | return TRUE; |
259 | } | 259 | } |
260 | } | 260 | } |
261 | 261 | ||
262 | // Unrecognized system. Be careful... | 262 | // Unrecognized system. Be careful... |
263 | QMessageBox unrecbox( | 263 | QMessageBox unrecbox( |
264 | tr("Sync Connection"), | 264 | tr("Sync Connection"), |
265 | tr("<p>An unrecognized system is requesting access to this device." | 265 | tr("<p>An unrecognized system is requesting access to this device." |
266 | "<p>If you have just initiated a Sync for the first time, this is normal."), | 266 | "<p>If you have just initiated a Sync for the first time, this is normal."), |
267 | QMessageBox::Warning, | 267 | QMessageBox::Warning, |
268 | QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton, | 268 | QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton, |
269 | 0, QString::null, TRUE, WStyle_StaysOnTop); | 269 | 0, QString::null, TRUE, WStyle_StaysOnTop); |
270 | unrecbox.setButtonText(QMessageBox::Cancel, tr("Deny")); | 270 | unrecbox.setButtonText(QMessageBox::Cancel, tr("Deny")); |
271 | unrecbox.setButtonText(QMessageBox::Yes, tr("Allow")); | 271 | unrecbox.setButtonText(QMessageBox::Yes, tr("Allow")); |
272 | 272 | ||
273 | if ( (denials > 2 && now < lastdenial+600) | 273 | if ( (denials > 2 && now < lastdenial+600) |
274 | || unrecbox.exec() != QMessageBox::Yes) | 274 | || unrecbox.exec() != QMessageBox::Yes) |
275 | { | 275 | { |
276 | denials++; | 276 | denials++; |
277 | lastdenial=now; | 277 | lastdenial=now; |
278 | lock--; | 278 | lock--; |
279 | return FALSE; | 279 | return FALSE; |
280 | } else { | 280 | } else { |
281 | const char salty[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/."; | 281 | const char salty[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/."; |
282 | char salt[2]; | 282 | char salt[2]; |
283 | salt[0]= salty[rand() % (sizeof(salty)-1)]; | 283 | salt[0]= salty[rand() % (sizeof(salty)-1)]; |
284 | salt[1]= salty[rand() % (sizeof(salty)-1)]; | 284 | salt[1]= salty[rand() % (sizeof(salty)-1)]; |
285 | #ifndef Q_OS_WIN32 | 285 | #ifndef Q_OS_WIN32 |
286 | QString cpassword = QString::fromLocal8Bit( | 286 | QString cpassword = QString::fromLocal8Bit( |
287 | crypt( password.mid(8).local8Bit(), salt ) ); | 287 | crypt( password.mid(8).local8Bit(), salt ) ); |
288 | #else | 288 | #else |
289 | //### revise | 289 | //### revise |
290 | QString cpassword(""); | 290 | QString cpassword(""); |
291 | #endif | 291 | #endif |
292 | denials=0; | 292 | denials=0; |
293 | pwds.prepend(cpassword); | 293 | pwds.prepend(cpassword); |
294 | cfg.writeEntry("Passwords",pwds,' '); | 294 | cfg.writeEntry("Passwords",pwds,' '); |
295 | lock--; | 295 | lock--; |
296 | return TRUE; | 296 | return TRUE; |
297 | } | 297 | } |
298 | } | 298 | } |
299 | lock--; | 299 | lock--; |
300 | 300 | ||
301 | return FALSE; | 301 | return FALSE; |
302 | } | 302 | } |
303 | 303 | ||
304 | 304 | ||
305 | ServerPI::ServerPI( int socket, QObject *parent, const char* name ) | 305 | ServerPI::ServerPI( int socket, QObject *parent, const char* name ) |
306 | : QSocket( parent, name ) , dtp( 0 ), serversocket( 0 ), waitsocket( 0 ), | 306 | : QSocket( parent, name ) , dtp( 0 ), serversocket( 0 ), waitsocket( 0 ), |
307 | storFileSize(-1) | 307 | storFileSize(-1) |
308 | { | 308 | { |
309 | state = Connected; | 309 | state = Connected; |
310 | 310 | ||
311 | setSocket( socket ); | 311 | setSocket( socket ); |
312 | 312 | ||
313 | peerport = peerPort(); | 313 | peerport = peerPort(); |
314 | peeraddress = peerAddress(); | 314 | peeraddress = peerAddress(); |
315 | 315 | ||
316 | #ifndef INSECURE | 316 | #ifndef INSECURE |
317 | if ( !SyncAuthentication::isAuthorized(peeraddress) ) { | 317 | if ( !SyncAuthentication::isAuthorized(peeraddress) ) { |
318 | state = Forbidden; | 318 | state = Forbidden; |
319 | startTimer( 0 ); | 319 | startTimer( 0 ); |
320 | } else | 320 | } else |
321 | #endif | 321 | #endif |
322 | { | 322 | { |
323 | connect( this, SIGNAL( readyRead() ), SLOT( read() ) ); | 323 | connect( this, SIGNAL( readyRead() ), SLOT( read() ) ); |
324 | connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) ); | 324 | connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) ); |
325 | 325 | ||
326 | passiv = FALSE; | 326 | passiv = FALSE; |
327 | for( int i = 0; i < 4; i++ ) | 327 | for( int i = 0; i < 4; i++ ) |
328 | wait[i] = FALSE; | 328 | wait[i] = FALSE; |
329 | 329 | ||
330 | send( "220 Qtopia " QPE_VERSION " FTP Server" ); // No tr | 330 | send( "220 Qtopia " QPE_VERSION " FTP Server" ); // No tr |
331 | state = Wait_USER; | 331 | state = Wait_USER; |
332 | 332 | ||
333 | dtp = new ServerDTP( this ); | 333 | dtp = new ServerDTP( this ); |
334 | connect( dtp, SIGNAL( completed() ), SLOT( dtpCompleted() ) ); | 334 | connect( dtp, SIGNAL( completed() ), SLOT( dtpCompleted() ) ); |
335 | connect( dtp, SIGNAL( failed() ), SLOT( dtpFailed() ) ); | 335 | connect( dtp, SIGNAL( failed() ), SLOT( dtpFailed() ) ); |
336 | connect( dtp, SIGNAL( error( int ) ), SLOT( dtpError( int ) ) ); | 336 | connect( dtp, SIGNAL( error(int) ), SLOT( dtpError(int) ) ); |
337 | 337 | ||
338 | 338 | ||
339 | directory = QDir::currentDirPath(); | 339 | directory = QDir::currentDirPath(); |
340 | 340 | ||
341 | static int p = 1024; | 341 | static int p = 1024; |
342 | 342 | ||
343 | while ( !serversocket || !serversocket->ok() ) { | 343 | while ( !serversocket || !serversocket->ok() ) { |
344 | delete serversocket; | 344 | delete serversocket; |
345 | serversocket = new ServerSocket( ++p, this ); | 345 | serversocket = new ServerSocket( ++p, this ); |
346 | } | 346 | } |
347 | connect( serversocket, SIGNAL( newIncomming( int ) ), | 347 | connect( serversocket, SIGNAL( newIncomming(int) ), |
348 | SLOT( newConnection( int ) ) ); | 348 | SLOT( newConnection(int) ) ); |
349 | } | 349 | } |
350 | } | 350 | } |
351 | 351 | ||
352 | ServerPI::~ServerPI() | 352 | ServerPI::~ServerPI() |
353 | { | 353 | { |
354 | close(); | 354 | close(); |
355 | 355 | ||
356 | if ( dtp ) | 356 | if ( dtp ) |
357 | dtp->close(); | 357 | dtp->close(); |
358 | delete dtp; | 358 | delete dtp; |
359 | delete serversocket; | 359 | delete serversocket; |
360 | } | 360 | } |
361 | 361 | ||
362 | bool ServerPI::verifyAuthorised() | 362 | bool ServerPI::verifyAuthorised() |
363 | { | 363 | { |
364 | if ( !SyncAuthentication::isAuthorized(peerAddress()) ) { | 364 | if ( !SyncAuthentication::isAuthorized(peerAddress()) ) { |
365 | state = Forbidden; | 365 | state = Forbidden; |
366 | return FALSE; | 366 | return FALSE; |
367 | } | 367 | } |
368 | return TRUE; | 368 | return TRUE; |
369 | } | 369 | } |
370 | 370 | ||
371 | void ServerPI::connectionClosed() | 371 | void ServerPI::connectionClosed() |
372 | { | 372 | { |
373 | // qDebug( "Debug: Connection closed" ); | 373 | // qDebug( "Debug: Connection closed" ); |
374 | emit connectionClosed(this); | 374 | emit connectionClosed(this); |
375 | } | 375 | } |
376 | 376 | ||
377 | void ServerPI::send( const QString& msg ) | 377 | void ServerPI::send( const QString& msg ) |
378 | { | 378 | { |
379 | QTextStream os( this ); | 379 | QTextStream os( this ); |
380 | os << msg << endl; | 380 | os << msg << endl; |
381 | //qDebug( "Reply: %s", msg.latin1() ); | 381 | //qDebug( "Reply: %s", msg.latin1() ); |
382 | } | 382 | } |
383 | 383 | ||
384 | void ServerPI::read() | 384 | void ServerPI::read() |
385 | { | 385 | { |
386 | while ( canReadLine() ) | 386 | while ( canReadLine() ) |
387 | process( readLine().stripWhiteSpace() ); | 387 | process( readLine().stripWhiteSpace() ); |
388 | } | 388 | } |
389 | 389 | ||
390 | bool ServerPI::checkReadFile( const QString& file ) | 390 | bool ServerPI::checkReadFile( const QString& file ) |
391 | { | 391 | { |
392 | QString filename; | 392 | QString filename; |
393 | 393 | ||
394 | if ( file[0] != "/" ) | 394 | if ( file[0] != "/" ) |
395 | filename = directory.path() + "/" + file; | 395 | filename = directory.path() + "/" + file; |
396 | else | 396 | else |
397 | filename = file; | 397 | filename = file; |
398 | 398 | ||
399 | QFileInfo fi( filename ); | 399 | QFileInfo fi( filename ); |
400 | return ( fi.exists() && fi.isReadable() ); | 400 | return ( fi.exists() && fi.isReadable() ); |
401 | } | 401 | } |
402 | 402 | ||
403 | bool ServerPI::checkWriteFile( const QString& file ) | 403 | bool ServerPI::checkWriteFile( const QString& file ) |
404 | { | 404 | { |
405 | QString filename; | 405 | QString filename; |
406 | 406 | ||
407 | if ( file[0] != "/" ) | 407 | if ( file[0] != "/" ) |
408 | filename = directory.path() + "/" + file; | 408 | filename = directory.path() + "/" + file; |
409 | else | 409 | else |
410 | filename = file; | 410 | filename = file; |
411 | 411 | ||
412 | QFileInfo fi( filename ); | 412 | QFileInfo fi( filename ); |
413 | 413 | ||
414 | if ( fi.exists() ) | 414 | if ( fi.exists() ) |
415 | if ( !QFile( filename ).remove() ) | 415 | if ( !QFile( filename ).remove() ) |
416 | return FALSE; | 416 | return FALSE; |
417 | return TRUE; | 417 | return TRUE; |
418 | } | 418 | } |
419 | 419 | ||
420 | void ServerPI::process( const QString& message ) | 420 | void ServerPI::process( const QString& message ) |
421 | { | 421 | { |
422 | //qDebug( "Command: %s", message.latin1() ); | 422 | //qDebug( "Command: %s", message.latin1() ); |
423 | 423 | ||
424 | // split message using "," as separator | 424 | // split message using "," as separator |
425 | QStringList msg = QStringList::split( " ", message ); | 425 | QStringList msg = QStringList::split( " ", message ); |
426 | if ( msg.isEmpty() ) return; | 426 | if ( msg.isEmpty() ) return; |
427 | 427 | ||
428 | // command token | 428 | // command token |
429 | QString cmd = msg[0].upper(); | 429 | QString cmd = msg[0].upper(); |
430 | 430 | ||
431 | // argument token | 431 | // argument token |
432 | QString arg; | 432 | QString arg; |
433 | if ( msg.count() >= 2 ) | 433 | if ( msg.count() >= 2 ) |
434 | arg = msg[1]; | 434 | arg = msg[1]; |
435 | 435 | ||
436 | // full argument string | 436 | // full argument string |
437 | QString args; | 437 | QString args; |
438 | if ( msg.count() >= 2 ) { | 438 | if ( msg.count() >= 2 ) { |
439 | QStringList copy( msg ); | 439 | QStringList copy( msg ); |
440 | // FIXME: for Qt3 | 440 | // FIXME: for Qt3 |
441 | // copy.pop_front() | 441 | // copy.pop_front() |
442 | copy.remove( copy.begin() ); | 442 | copy.remove( copy.begin() ); |
443 | args = copy.join( " " ); | 443 | args = copy.join( " " ); |
444 | } | 444 | } |
@@ -993,193 +993,193 @@ QString ServerPI::fileListing( QFileInfo *info ) | |||
993 | 993 | ||
994 | QString ServerPI::permissionString( QFileInfo *info ) | 994 | QString ServerPI::permissionString( QFileInfo *info ) |
995 | { | 995 | { |
996 | if ( !info ) return QString( "---------" ); | 996 | if ( !info ) return QString( "---------" ); |
997 | QString s; | 997 | QString s; |
998 | 998 | ||
999 | // user | 999 | // user |
1000 | if ( info->permission( QFileInfo::ReadUser ) ) s += "r"; | 1000 | if ( info->permission( QFileInfo::ReadUser ) ) s += "r"; |
1001 | else s += "-"; | 1001 | else s += "-"; |
1002 | if ( info->permission( QFileInfo::WriteUser ) ) s += "w"; | 1002 | if ( info->permission( QFileInfo::WriteUser ) ) s += "w"; |
1003 | else s += "-"; | 1003 | else s += "-"; |
1004 | if ( info->permission( QFileInfo::ExeUser ) ) s += "x"; | 1004 | if ( info->permission( QFileInfo::ExeUser ) ) s += "x"; |
1005 | else s += "-"; | 1005 | else s += "-"; |
1006 | 1006 | ||
1007 | // group | 1007 | // group |
1008 | if ( info->permission( QFileInfo::ReadGroup ) ) s += "r"; | 1008 | if ( info->permission( QFileInfo::ReadGroup ) ) s += "r"; |
1009 | else s += "-"; | 1009 | else s += "-"; |
1010 | if ( info->permission( QFileInfo::WriteGroup ) )s += "w"; | 1010 | if ( info->permission( QFileInfo::WriteGroup ) )s += "w"; |
1011 | else s += "-"; | 1011 | else s += "-"; |
1012 | if ( info->permission( QFileInfo::ExeGroup ) ) s += "x"; | 1012 | if ( info->permission( QFileInfo::ExeGroup ) ) s += "x"; |
1013 | else s += "-"; | 1013 | else s += "-"; |
1014 | 1014 | ||
1015 | // exec | 1015 | // exec |
1016 | if ( info->permission( QFileInfo::ReadOther ) ) s += "r"; | 1016 | if ( info->permission( QFileInfo::ReadOther ) ) s += "r"; |
1017 | else s += "-"; | 1017 | else s += "-"; |
1018 | if ( info->permission( QFileInfo::WriteOther ) ) s += "w"; | 1018 | if ( info->permission( QFileInfo::WriteOther ) ) s += "w"; |
1019 | else s += "-"; | 1019 | else s += "-"; |
1020 | if ( info->permission( QFileInfo::ExeOther ) ) s += "x"; | 1020 | if ( info->permission( QFileInfo::ExeOther ) ) s += "x"; |
1021 | else s += "-"; | 1021 | else s += "-"; |
1022 | 1022 | ||
1023 | return s; | 1023 | return s; |
1024 | } | 1024 | } |
1025 | 1025 | ||
1026 | void ServerPI::newConnection( int socket ) | 1026 | void ServerPI::newConnection( int socket ) |
1027 | { | 1027 | { |
1028 | //qDebug( "New incomming connection" ); | 1028 | //qDebug( "New incomming connection" ); |
1029 | 1029 | ||
1030 | if ( !passiv ) return; | 1030 | if ( !passiv ) return; |
1031 | 1031 | ||
1032 | if ( wait[SendFile] ) { | 1032 | if ( wait[SendFile] ) { |
1033 | QStringList targets; | 1033 | QStringList targets; |
1034 | if ( backupRestoreGzip( waitfile, targets ) ) | 1034 | if ( backupRestoreGzip( waitfile, targets ) ) |
1035 | dtp->sendGzipFile( waitfile, targets ); | 1035 | dtp->sendGzipFile( waitfile, targets ); |
1036 | else | 1036 | else |
1037 | dtp->sendFile( waitfile ); | 1037 | dtp->sendFile( waitfile ); |
1038 | dtp->setSocket( socket ); | 1038 | dtp->setSocket( socket ); |
1039 | } | 1039 | } |
1040 | else if ( wait[RetrieveFile] ) { | 1040 | else if ( wait[RetrieveFile] ) { |
1041 | qDebug("check retrieve file"); | 1041 | qDebug("check retrieve file"); |
1042 | if ( backupRestoreGzip( waitfile ) ) | 1042 | if ( backupRestoreGzip( waitfile ) ) |
1043 | dtp->retrieveGzipFile( waitfile ); | 1043 | dtp->retrieveGzipFile( waitfile ); |
1044 | else | 1044 | else |
1045 | dtp->retrieveFile( waitfile, storFileSize ); | 1045 | dtp->retrieveFile( waitfile, storFileSize ); |
1046 | dtp->setSocket( socket ); | 1046 | dtp->setSocket( socket ); |
1047 | } | 1047 | } |
1048 | else if ( wait[SendByteArray] ) { | 1048 | else if ( wait[SendByteArray] ) { |
1049 | dtp->sendByteArray( waitarray ); | 1049 | dtp->sendByteArray( waitarray ); |
1050 | dtp->setSocket( socket ); | 1050 | dtp->setSocket( socket ); |
1051 | } | 1051 | } |
1052 | else if ( wait[RetrieveByteArray] ) { | 1052 | else if ( wait[RetrieveByteArray] ) { |
1053 | qDebug("retrieve byte array"); | 1053 | qDebug("retrieve byte array"); |
1054 | dtp->retrieveByteArray(); | 1054 | dtp->retrieveByteArray(); |
1055 | dtp->setSocket( socket ); | 1055 | dtp->setSocket( socket ); |
1056 | } | 1056 | } |
1057 | else | 1057 | else |
1058 | waitsocket = socket; | 1058 | waitsocket = socket; |
1059 | 1059 | ||
1060 | for( int i = 0; i < 4; i++ ) | 1060 | for( int i = 0; i < 4; i++ ) |
1061 | wait[i] = FALSE; | 1061 | wait[i] = FALSE; |
1062 | } | 1062 | } |
1063 | 1063 | ||
1064 | QString ServerPI::absFilePath( const QString& file ) | 1064 | QString ServerPI::absFilePath( const QString& file ) |
1065 | { | 1065 | { |
1066 | if ( file.isEmpty() ) return file; | 1066 | if ( file.isEmpty() ) return file; |
1067 | 1067 | ||
1068 | QString filepath( file ); | 1068 | QString filepath( file ); |
1069 | if ( file[0] != "/" ) | 1069 | if ( file[0] != "/" ) |
1070 | filepath = directory.path() + "/" + file; | 1070 | filepath = directory.path() + "/" + file; |
1071 | 1071 | ||
1072 | return filepath; | 1072 | return filepath; |
1073 | } | 1073 | } |
1074 | 1074 | ||
1075 | 1075 | ||
1076 | void ServerPI::timerEvent( QTimerEvent * ) | 1076 | void ServerPI::timerEvent( QTimerEvent * ) |
1077 | { | 1077 | { |
1078 | connectionClosed(); | 1078 | connectionClosed(); |
1079 | } | 1079 | } |
1080 | 1080 | ||
1081 | 1081 | ||
1082 | ServerDTP::ServerDTP( QObject *parent, const char* name) | 1082 | ServerDTP::ServerDTP( QObject *parent, const char* name) |
1083 | : QSocket( parent, name ), mode( Idle ), createTargzProc( 0 ), | 1083 | : QSocket( parent, name ), mode( Idle ), createTargzProc( 0 ), |
1084 | retrieveTargzProc( 0 ) | 1084 | retrieveTargzProc( 0 ) |
1085 | { | 1085 | { |
1086 | 1086 | ||
1087 | connect( this, SIGNAL( connected() ), SLOT( connected() ) ); | 1087 | connect( this, SIGNAL( connected() ), SLOT( connected() ) ); |
1088 | connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) ); | 1088 | connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) ); |
1089 | connect( this, SIGNAL( bytesWritten( int ) ), SLOT( bytesWritten( int ) ) ); | 1089 | connect( this, SIGNAL( bytesWritten(int) ), SLOT( bytesWritten(int) ) ); |
1090 | connect( this, SIGNAL( readyRead() ), SLOT( readyRead() ) ); | 1090 | connect( this, SIGNAL( readyRead() ), SLOT( readyRead() ) ); |
1091 | 1091 | ||
1092 | createTargzProc = new QProcess( QString("tar"), this, "createTargzProc"); // No tr | 1092 | createTargzProc = new QProcess( QString("tar"), this, "createTargzProc"); // No tr |
1093 | createTargzProc->setCommunication( QProcess::Stdout ); | 1093 | createTargzProc->setCommunication( QProcess::Stdout ); |
1094 | createTargzProc->setWorkingDirectory( QDir::rootDirPath() ); | 1094 | createTargzProc->setWorkingDirectory( QDir::rootDirPath() ); |
1095 | connect( createTargzProc, SIGNAL( processExited() ), SLOT( targzDone() ) ); | 1095 | connect( createTargzProc, SIGNAL( processExited() ), SLOT( targzDone() ) ); |
1096 | 1096 | ||
1097 | retrieveTargzProc = new QProcess( this, "retrieveTargzProc" ); | 1097 | retrieveTargzProc = new QProcess( this, "retrieveTargzProc" ); |
1098 | retrieveTargzProc->setCommunication( QProcess::Stdin ); | 1098 | retrieveTargzProc->setCommunication( QProcess::Stdin ); |
1099 | retrieveTargzProc->setWorkingDirectory( QDir::rootDirPath() ); | 1099 | retrieveTargzProc->setWorkingDirectory( QDir::rootDirPath() ); |
1100 | connect( retrieveTargzProc, SIGNAL( processExited() ), | 1100 | connect( retrieveTargzProc, SIGNAL( processExited() ), |
1101 | SIGNAL( completed() ) ); | 1101 | SIGNAL( completed() ) ); |
1102 | connect( retrieveTargzProc, SIGNAL( processExited() ), | 1102 | connect( retrieveTargzProc, SIGNAL( processExited() ), |
1103 | SLOT( extractTarDone() ) ); | 1103 | SLOT( extractTarDone() ) ); |
1104 | } | 1104 | } |
1105 | 1105 | ||
1106 | ServerDTP::~ServerDTP() | 1106 | ServerDTP::~ServerDTP() |
1107 | { | 1107 | { |
1108 | buf.close(); | 1108 | buf.close(); |
1109 | if ( RetrieveFile == mode && file.isOpen() ) { | 1109 | if ( RetrieveFile == mode && file.isOpen() ) { |
1110 | // We're being shutdown before the client closed. | 1110 | // We're being shutdown before the client closed. |
1111 | file.close(); | 1111 | file.close(); |
1112 | if ( recvFileSize >= 0 && (int)file.size() != recvFileSize ) { | 1112 | if ( recvFileSize >= 0 && (int)file.size() != recvFileSize ) { |
1113 | qDebug( "STOR incomplete" ); | 1113 | qDebug( "STOR incomplete" ); |
1114 | file.remove(); | 1114 | file.remove(); |
1115 | } | 1115 | } |
1116 | } else { | 1116 | } else { |
1117 | file.close(); | 1117 | file.close(); |
1118 | } | 1118 | } |
1119 | createTargzProc->kill(); | 1119 | createTargzProc->kill(); |
1120 | } | 1120 | } |
1121 | 1121 | ||
1122 | void ServerDTP::extractTarDone() | 1122 | void ServerDTP::extractTarDone() |
1123 | { | 1123 | { |
1124 | qDebug("extract done"); | 1124 | qDebug("extract done"); |
1125 | #ifndef QT_NO_COP | 1125 | #ifndef QT_NO_COP |
1126 | QCopEnvelope e( "QPE/System", "restoreDone(QString)" ); | 1126 | QCopEnvelope e( "QPE/System", "restoreDone(QString)" ); |
1127 | e << file.name(); | 1127 | e << file.name(); |
1128 | #endif | 1128 | #endif |
1129 | } | 1129 | } |
1130 | 1130 | ||
1131 | void ServerDTP::connected() | 1131 | void ServerDTP::connected() |
1132 | { | 1132 | { |
1133 | // send file mode | 1133 | // send file mode |
1134 | switch ( mode ) { | 1134 | switch ( mode ) { |
1135 | case SendFile : | 1135 | case SendFile : |
1136 | if ( !file.exists() || !file.open( IO_ReadOnly) ) { | 1136 | if ( !file.exists() || !file.open( IO_ReadOnly) ) { |
1137 | emit failed(); | 1137 | emit failed(); |
1138 | mode = Idle; | 1138 | mode = Idle; |
1139 | return; | 1139 | return; |
1140 | } | 1140 | } |
1141 | 1141 | ||
1142 | //qDebug( "Debug: Sending file '%s'", file.name().latin1() ); | 1142 | //qDebug( "Debug: Sending file '%s'", file.name().latin1() ); |
1143 | 1143 | ||
1144 | bytes_written = 0; | 1144 | bytes_written = 0; |
1145 | if ( file.size() == 0 ) { | 1145 | if ( file.size() == 0 ) { |
1146 | //make sure it doesn't hang on empty files | 1146 | //make sure it doesn't hang on empty files |
1147 | file.close(); | 1147 | file.close(); |
1148 | emit completed(); | 1148 | emit completed(); |
1149 | mode = Idle; | 1149 | mode = Idle; |
1150 | } else { | 1150 | } else { |
1151 | // Don't write more if there is plenty buffered already. | 1151 | // Don't write more if there is plenty buffered already. |
1152 | if ( bytesToWrite() <= block_size && !file.atEnd() ) { | 1152 | if ( bytesToWrite() <= block_size && !file.atEnd() ) { |
1153 | QCString s; | 1153 | QCString s; |
1154 | s.resize( block_size ); | 1154 | s.resize( block_size ); |
1155 | int bytes = file.readBlock( s.data(), block_size ); | 1155 | int bytes = file.readBlock( s.data(), block_size ); |
1156 | writeBlock( s.data(), bytes ); | 1156 | writeBlock( s.data(), bytes ); |
1157 | } | 1157 | } |
1158 | } | 1158 | } |
1159 | break; | 1159 | break; |
1160 | case SendGzipFile: | 1160 | case SendGzipFile: |
1161 | if ( createTargzProc->isRunning() ) { | 1161 | if ( createTargzProc->isRunning() ) { |
1162 | // SHOULDN'T GET HERE, BUT DOING A SAFETY CHECK ANYWAY | 1162 | // SHOULDN'T GET HERE, BUT DOING A SAFETY CHECK ANYWAY |
1163 | qWarning("Previous tar --gzip process is still running; killing it..."); | 1163 | qWarning("Previous tar --gzip process is still running; killing it..."); |
1164 | createTargzProc->kill(); | 1164 | createTargzProc->kill(); |
1165 | } | 1165 | } |
1166 | 1166 | ||
1167 | bytes_written = 0; | 1167 | bytes_written = 0; |
1168 | qDebug("==>start send tar process"); | 1168 | qDebug("==>start send tar process"); |
1169 | if ( !createTargzProc->start() ) | 1169 | if ( !createTargzProc->start() ) |
1170 | qWarning("Error starting %s", | 1170 | qWarning("Error starting %s", |
1171 | createTargzProc->arguments().join(" ").latin1()); | 1171 | createTargzProc->arguments().join(" ").latin1()); |
1172 | break; | 1172 | break; |
1173 | case SendBuffer: | 1173 | case SendBuffer: |
1174 | if ( !buf.open( IO_ReadOnly) ) { | 1174 | if ( !buf.open( IO_ReadOnly) ) { |
1175 | emit failed(); | 1175 | emit failed(); |
1176 | mode = Idle; | 1176 | mode = Idle; |
1177 | return; | 1177 | return; |
1178 | } | 1178 | } |
1179 | 1179 | ||
1180 | // qDebug( "Debug: Sending byte array" ); | 1180 | // qDebug( "Debug: Sending byte array" ); |
1181 | bytes_written = 0; | 1181 | bytes_written = 0; |
1182 | while( !buf.atEnd() ) | 1182 | while( !buf.atEnd() ) |
1183 | putch( buf.getch() ); | 1183 | putch( buf.getch() ); |
1184 | buf.close(); | 1184 | buf.close(); |
1185 | break; | 1185 | break; |
diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp index 82242a3..4ed5921 100644 --- a/core/multimedia/opieplayer/loopcontrol.cpp +++ b/core/multimedia/opieplayer/loopcontrol.cpp | |||
@@ -348,138 +348,138 @@ void LoopControl::stop( bool willPlayAgainShortly ) { | |||
348 | audioMutex->unlock(); | 348 | audioMutex->unlock(); |
349 | } | 349 | } |
350 | audioSampleCounter=0; | 350 | audioSampleCounter=0; |
351 | current_frame=0; | 351 | current_frame=0; |
352 | total_audio_samples=0; | 352 | total_audio_samples=0; |
353 | } | 353 | } |
354 | 354 | ||
355 | 355 | ||
356 | bool LoopControl::init( const QString& filename ) { | 356 | bool LoopControl::init( const QString& filename ) { |
357 | stop(); | 357 | stop(); |
358 | audioMutex->lock(); | 358 | audioMutex->lock(); |
359 | 359 | ||
360 | fileName = filename; | 360 | fileName = filename; |
361 | stream = 0; // only play stream 0 for now | 361 | stream = 0; // only play stream 0 for now |
362 | current_frame = total_video_frames = total_audio_samples = 0; | 362 | current_frame = total_video_frames = total_audio_samples = 0; |
363 | 363 | ||
364 | // qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() ); | 364 | // qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() ); |
365 | 365 | ||
366 | // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin | 366 | // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin |
367 | // if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) { | 367 | // if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) { |
368 | // if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename )) { | 368 | // if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename )) { |
369 | // total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 ); | 369 | // total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 ); |
370 | // mediaPlayerState->libMpeg3Decoder()->close(); | 370 | // mediaPlayerState->libMpeg3Decoder()->close(); |
371 | // } | 371 | // } |
372 | // } | 372 | // } |
373 | 373 | ||
374 | if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) { | 374 | if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) { |
375 | audioMutex->unlock(); | 375 | audioMutex->unlock(); |
376 | return FALSE; | 376 | return FALSE; |
377 | } | 377 | } |
378 | 378 | ||
379 | hasAudioChannel = mediaPlayerState->curDecoder()->audioStreams() > 0; | 379 | hasAudioChannel = mediaPlayerState->curDecoder()->audioStreams() > 0; |
380 | hasVideoChannel = mediaPlayerState->curDecoder()->videoStreams() > 0; | 380 | hasVideoChannel = mediaPlayerState->curDecoder()->videoStreams() > 0; |
381 | 381 | ||
382 | if ( hasAudioChannel ) { | 382 | if ( hasAudioChannel ) { |
383 | int astream = 0; | 383 | int astream = 0; |
384 | 384 | ||
385 | if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMpeg3Plugin") ) | 385 | if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMpeg3Plugin") ) |
386 | channels = 2; //dont akx me why, but it needs this hack | 386 | channels = 2; //dont akx me why, but it needs this hack |
387 | else | 387 | else |
388 | channels = mediaPlayerState->curDecoder()->audioChannels( astream ); | 388 | channels = mediaPlayerState->curDecoder()->audioChannels( astream ); |
389 | 389 | ||
390 | // qDebug( "LC- channels = %d", channels ); | 390 | // qDebug( "LC- channels = %d", channels ); |
391 | 391 | ||
392 | // if ( !total_audio_samples ) | 392 | // if ( !total_audio_samples ) |
393 | total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); | 393 | total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); |
394 | 394 | ||
395 | total_audio_samples += 1000; | 395 | total_audio_samples += 1000; |
396 | // qDebug("total samples %d", total_audio_samples); | 396 | // qDebug("total samples %d", total_audio_samples); |
397 | mediaPlayerState->setLength( total_audio_samples ); | 397 | mediaPlayerState->setLength( total_audio_samples ); |
398 | 398 | ||
399 | freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); | 399 | freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); |
400 | // qDebug( "LC- frequency = %d", freq ); | 400 | // qDebug( "LC- frequency = %d", freq ); |
401 | 401 | ||
402 | audioSampleCounter = 0; | 402 | audioSampleCounter = 0; |
403 | int bits_per_sample; | 403 | int bits_per_sample; |
404 | if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) { | 404 | if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) { |
405 | bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime(); | 405 | bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime(); |
406 | // qDebug("using stupid hack"); | 406 | // qDebug("using stupid hack"); |
407 | } else { | 407 | } else { |
408 | bits_per_sample=0; | 408 | bits_per_sample=0; |
409 | } | 409 | } |
410 | 410 | ||
411 | audioDevice = new AudioDevice( freq, channels, bits_per_sample); | 411 | audioDevice = new AudioDevice( freq, channels, bits_per_sample); |
412 | audioBuffer = new char[ audioDevice->bufferSize() ]; | 412 | audioBuffer = new char[ audioDevice->bufferSize() ]; |
413 | channels = audioDevice->channels(); | 413 | channels = audioDevice->channels(); |
414 | 414 | ||
415 | //### must check which frequency is actually used. | 415 | //### must check which frequency is actually used. |
416 | static const int size = 1; | 416 | static const int size = 1; |
417 | short int buf[size]; | 417 | short int buf[size]; |
418 | long samplesRead = 0; | 418 | long samplesRead = 0; |
419 | mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream ); | 419 | mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream ); |
420 | } | 420 | } |
421 | 421 | ||
422 | if ( hasVideoChannel ) { | 422 | if ( hasVideoChannel ) { |
423 | total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream ); | 423 | total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream ); |
424 | 424 | ||
425 | mediaPlayerState->setLength( total_video_frames ); | 425 | mediaPlayerState->setLength( total_video_frames ); |
426 | 426 | ||
427 | framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream ); | 427 | framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream ); |
428 | DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames )); | 428 | DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames )); |
429 | 429 | ||
430 | if ( framerate <= 1.0 ) { | 430 | if ( framerate <= 1.0 ) { |
431 | DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" )); | 431 | DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" )); |
432 | framerate = 25; | 432 | framerate = 25; |
433 | } | 433 | } |
434 | 434 | ||
435 | if ( total_video_frames == 1 ) { | 435 | if ( total_video_frames == 1 ) { |
436 | DecodeLoopDebug(( "Cannot seek to frame" )); | 436 | DecodeLoopDebug(( "Cannot seek to frame" )); |
437 | } | 437 | } |
438 | 438 | ||
439 | } | 439 | } |
440 | 440 | ||
441 | current_frame = 0; | 441 | current_frame = 0; |
442 | prev_frame = -1; | 442 | prev_frame = -1; |
443 | 443 | ||
444 | connect( mediaPlayerState, SIGNAL( positionChanged( long ) ), this, SLOT( setPosition( long ) ) ); | 444 | connect( mediaPlayerState, SIGNAL( positionChanged(long) ), this, SLOT( setPosition(long) ) ); |
445 | connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( setPaused( bool ) ) ); | 445 | connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) ); |
446 | 446 | ||
447 | audioMutex->unlock(); | 447 | audioMutex->unlock(); |
448 | 448 | ||
449 | return TRUE; | 449 | return TRUE; |
450 | } | 450 | } |
451 | 451 | ||
452 | 452 | ||
453 | void LoopControl::play() { | 453 | void LoopControl::play() { |
454 | // qDebug("LC- play"); | 454 | // qDebug("LC- play"); |
455 | mediaPlayerState->setPosition( 0); //uglyhack | 455 | mediaPlayerState->setPosition( 0); //uglyhack |
456 | 456 | ||
457 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 457 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
458 | if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) { | 458 | if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) { |
459 | disabledSuspendScreenSaver = TRUE; | 459 | disabledSuspendScreenSaver = TRUE; |
460 | previousSuspendMode = hasVideoChannel; | 460 | previousSuspendMode = hasVideoChannel; |
461 | // Stop the screen from blanking and power saving state | 461 | // Stop the screen from blanking and power saving state |
462 | QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) | 462 | QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) |
463 | << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend ); | 463 | << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend ); |
464 | } | 464 | } |
465 | #endif | 465 | #endif |
466 | 466 | ||
467 | playtime.start(); | 467 | playtime.start(); |
468 | startTimers(); | 468 | startTimers(); |
469 | } | 469 | } |
470 | 470 | ||
471 | 471 | ||
472 | void LoopControl::setMute( bool on ) { | 472 | void LoopControl::setMute( bool on ) { |
473 | if ( on != isMuted ) { | 473 | if ( on != isMuted ) { |
474 | isMuted = on; | 474 | isMuted = on; |
475 | if ( !on ) { | 475 | if ( !on ) { |
476 | // Force an update of the position | 476 | // Force an update of the position |
477 | mediaPlayerState->setPosition( mediaPlayerState->position() + 1 ); | 477 | mediaPlayerState->setPosition( mediaPlayerState->position() + 1 ); |
478 | mediaPlayerState->setPosition( mediaPlayerState->position() - 1 ); | 478 | mediaPlayerState->setPosition( mediaPlayerState->position() - 1 ); |
479 | // Resume playing audio | 479 | // Resume playing audio |
480 | moreAudio = TRUE; | 480 | moreAudio = TRUE; |
481 | } | 481 | } |
482 | } | 482 | } |
483 | } | 483 | } |
484 | 484 | ||
485 | 485 | ||
diff --git a/core/multimedia/opieplayer/loopcontrol_threaded.cpp b/core/multimedia/opieplayer/loopcontrol_threaded.cpp index 3796549..0a1fc17 100644 --- a/core/multimedia/opieplayer/loopcontrol_threaded.cpp +++ b/core/multimedia/opieplayer/loopcontrol_threaded.cpp | |||
@@ -488,137 +488,137 @@ void LoopControl::stop( bool willPlayAgainShortly ) { | |||
488 | QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 488 | QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
489 | } | 489 | } |
490 | #endif | 490 | #endif |
491 | 491 | ||
492 | if ( mediaPlayerState->curDecoder() && mediaPlayerState->curDecoder()->isOpen() ) { | 492 | if ( mediaPlayerState->curDecoder() && mediaPlayerState->curDecoder()->isOpen() ) { |
493 | 493 | ||
494 | killTimers(); | 494 | killTimers(); |
495 | 495 | ||
496 | mediaPlayerState->curDecoder()->close(); | 496 | mediaPlayerState->curDecoder()->close(); |
497 | 497 | ||
498 | if ( audioDevice ) { | 498 | if ( audioDevice ) { |
499 | delete audioDevice; | 499 | delete audioDevice; |
500 | delete audioBuffer; | 500 | delete audioBuffer; |
501 | audioDevice = 0; | 501 | audioDevice = 0; |
502 | audioBuffer = 0; | 502 | audioBuffer = 0; |
503 | } | 503 | } |
504 | 504 | ||
505 | } | 505 | } |
506 | } | 506 | } |
507 | 507 | ||
508 | 508 | ||
509 | bool LoopControl::init( const QString& filename ) { | 509 | bool LoopControl::init( const QString& filename ) { |
510 | stop(); | 510 | stop(); |
511 | fileName = filename; | 511 | fileName = filename; |
512 | stream = 0; // only play stream 0 for now | 512 | stream = 0; // only play stream 0 for now |
513 | current_frame = total_video_frames = total_audio_samples = 0; | 513 | current_frame = total_video_frames = total_audio_samples = 0; |
514 | 514 | ||
515 | // qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() ); | 515 | // qDebug( "Using the %s decoder", mediaPlayerState->curDecoder()->pluginName() ); |
516 | 516 | ||
517 | // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin | 517 | // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin |
518 | if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) { | 518 | if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) { |
519 | if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename ) ) { | 519 | if ( mediaPlayerState->libMpeg3Decoder() && mediaPlayerState->libMpeg3Decoder()->open( filename ) ) { |
520 | total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 ); | 520 | total_audio_samples = mediaPlayerState->libMpeg3Decoder()->audioSamples( 0 ); |
521 | mediaPlayerState->libMpeg3Decoder()->close(); | 521 | mediaPlayerState->libMpeg3Decoder()->close(); |
522 | } | 522 | } |
523 | } | 523 | } |
524 | 524 | ||
525 | if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) | 525 | if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) |
526 | return FALSE; | 526 | return FALSE; |
527 | 527 | ||
528 | hasAudioChannel = mediaPlayerState->curDecoder()->audioStreams() > 0; | 528 | hasAudioChannel = mediaPlayerState->curDecoder()->audioStreams() > 0; |
529 | hasVideoChannel = mediaPlayerState->curDecoder()->videoStreams() > 0; | 529 | hasVideoChannel = mediaPlayerState->curDecoder()->videoStreams() > 0; |
530 | 530 | ||
531 | if ( hasAudioChannel ) { | 531 | if ( hasAudioChannel ) { |
532 | int astream = 0; | 532 | int astream = 0; |
533 | 533 | ||
534 | channels = mediaPlayerState->curDecoder()->audioChannels( astream ); | 534 | channels = mediaPlayerState->curDecoder()->audioChannels( astream ); |
535 | DecodeLoopDebug(( "channels = %d\n", channels )); | 535 | DecodeLoopDebug(( "channels = %d\n", channels )); |
536 | 536 | ||
537 | if ( !total_audio_samples ) | 537 | if ( !total_audio_samples ) |
538 | total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); | 538 | total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); |
539 | 539 | ||
540 | mediaPlayerState->setLength( total_audio_samples ); | 540 | mediaPlayerState->setLength( total_audio_samples ); |
541 | 541 | ||
542 | freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); | 542 | freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); |
543 | DecodeLoopDebug(( "frequency = %d\n", freq )); | 543 | DecodeLoopDebug(( "frequency = %d\n", freq )); |
544 | 544 | ||
545 | audioSampleCounter = 0; | 545 | audioSampleCounter = 0; |
546 | 546 | ||
547 | static const int bytes_per_sample = 2; //16 bit | 547 | static const int bytes_per_sample = 2; //16 bit |
548 | 548 | ||
549 | audioDevice = new AudioDevice( freq, channels, bytes_per_sample ); | 549 | audioDevice = new AudioDevice( freq, channels, bytes_per_sample ); |
550 | audioBuffer = new char[ audioDevice->bufferSize() ]; | 550 | audioBuffer = new char[ audioDevice->bufferSize() ]; |
551 | channels = audioDevice->channels(); | 551 | channels = audioDevice->channels(); |
552 | 552 | ||
553 | //### must check which frequency is actually used. | 553 | //### must check which frequency is actually used. |
554 | static const int size = 1; | 554 | static const int size = 1; |
555 | short int buf[size]; | 555 | short int buf[size]; |
556 | long samplesRead = 0; | 556 | long samplesRead = 0; |
557 | mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream ); | 557 | mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream ); |
558 | } | 558 | } |
559 | 559 | ||
560 | if ( hasVideoChannel ) { | 560 | if ( hasVideoChannel ) { |
561 | total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream ); | 561 | total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream ); |
562 | 562 | ||
563 | mediaPlayerState->setLength( total_video_frames ); | 563 | mediaPlayerState->setLength( total_video_frames ); |
564 | 564 | ||
565 | framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream ); | 565 | framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream ); |
566 | DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames )); | 566 | DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames )); |
567 | 567 | ||
568 | if ( framerate <= 1.0 ) { | 568 | if ( framerate <= 1.0 ) { |
569 | DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" )); | 569 | DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" )); |
570 | framerate = 25; | 570 | framerate = 25; |
571 | } | 571 | } |
572 | 572 | ||
573 | if ( total_video_frames == 1 ) { | 573 | if ( total_video_frames == 1 ) { |
574 | DecodeLoopDebug(( "Cannot seek to frame" )); | 574 | DecodeLoopDebug(( "Cannot seek to frame" )); |
575 | } | 575 | } |
576 | 576 | ||
577 | } | 577 | } |
578 | 578 | ||
579 | videoMutex->lock(); | 579 | videoMutex->lock(); |
580 | current_frame = 0; | 580 | current_frame = 0; |
581 | prev_frame = -1; | 581 | prev_frame = -1; |
582 | videoMutex->unlock(); | 582 | videoMutex->unlock(); |
583 | 583 | ||
584 | connect( mediaPlayerState, SIGNAL( positionChanged( long ) ), this, SLOT( setPosition( long ) ) ); | 584 | connect( mediaPlayerState, SIGNAL( positionChanged(long) ), this, SLOT( setPosition(long) ) ); |
585 | connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( setPaused( bool ) ) ); | 585 | connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) ); |
586 | 586 | ||
587 | //setBackgroundColor( black ); | 587 | //setBackgroundColor( black ); |
588 | return TRUE; | 588 | return TRUE; |
589 | } | 589 | } |
590 | 590 | ||
591 | 591 | ||
592 | void LoopControl::play() { | 592 | void LoopControl::play() { |
593 | 593 | ||
594 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 594 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
595 | if ( !disabledSuspendScreenSaver ) { | 595 | if ( !disabledSuspendScreenSaver ) { |
596 | disabledSuspendScreenSaver = TRUE; | 596 | disabledSuspendScreenSaver = TRUE; |
597 | // Stop the screen from blanking and power saving state | 597 | // Stop the screen from blanking and power saving state |
598 | QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) | 598 | QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) |
599 | << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend ); | 599 | << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend ); |
600 | } | 600 | } |
601 | #endif | 601 | #endif |
602 | 602 | ||
603 | //begin = clock(); | 603 | //begin = clock(); |
604 | playtime.start(); | 604 | playtime.start(); |
605 | startTimers(); | 605 | startTimers(); |
606 | //updateGeometry(); | 606 | //updateGeometry(); |
607 | } | 607 | } |
608 | 608 | ||
609 | 609 | ||
610 | void LoopControl::setMute( bool on ) { | 610 | void LoopControl::setMute( bool on ) { |
611 | if ( isMuted != on ) { | 611 | if ( isMuted != on ) { |
612 | isMuted = on; | 612 | isMuted = on; |
613 | if ( isMuted ) { | 613 | if ( isMuted ) { |
614 | } else { | 614 | } else { |
615 | int frame = current_frame; // mediaPlayerState->curDecoder()->videoGetFrame( stream ); | 615 | int frame = current_frame; // mediaPlayerState->curDecoder()->videoGetFrame( stream ); |
616 | playtime.restart(); | 616 | playtime.restart(); |
617 | playtime = playtime.addMSecs( -frame * 1000 / framerate ); | 617 | playtime = playtime.addMSecs( -frame * 1000 / framerate ); |
618 | //begin = clock() - (double)frame * CLOCKS_PER_SEC / framerate; | 618 | //begin = clock() - (double)frame * CLOCKS_PER_SEC / framerate; |
619 | mediaPlayerState->curDecoder()->audioSetSample( frame*freq/framerate, stream ); | 619 | mediaPlayerState->curDecoder()->audioSetSample( frame*freq/framerate, stream ); |
620 | } | 620 | } |
621 | } | 621 | } |
622 | } | 622 | } |
623 | 623 | ||
624 | 624 | ||
diff --git a/core/multimedia/opieplayer/mediaplayer.cpp b/core/multimedia/opieplayer/mediaplayer.cpp index b77708c..6c743ec 100644 --- a/core/multimedia/opieplayer/mediaplayer.cpp +++ b/core/multimedia/opieplayer/mediaplayer.cpp | |||
@@ -1,142 +1,142 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | 21 | ||
22 | #include <qmessagebox.h> | 22 | #include <qmessagebox.h> |
23 | 23 | ||
24 | #include "mediaplayer.h" | 24 | #include "mediaplayer.h" |
25 | #include "playlistwidget.h" | 25 | #include "playlistwidget.h" |
26 | #include "audiowidget.h" | 26 | #include "audiowidget.h" |
27 | #include "loopcontrol.h" | 27 | #include "loopcontrol.h" |
28 | #include "audiodevice.h" | 28 | #include "audiodevice.h" |
29 | 29 | ||
30 | #include "mediaplayerstate.h" | 30 | #include "mediaplayerstate.h" |
31 | 31 | ||
32 | 32 | ||
33 | extern AudioWidget *audioUI; | 33 | extern AudioWidget *audioUI; |
34 | extern PlayListWidget *playList; | 34 | extern PlayListWidget *playList; |
35 | extern LoopControl *loopControl; | 35 | extern LoopControl *loopControl; |
36 | extern MediaPlayerState *mediaPlayerState; | 36 | extern MediaPlayerState *mediaPlayerState; |
37 | 37 | ||
38 | 38 | ||
39 | MediaPlayer::MediaPlayer( QObject *parent, const char *name ) | 39 | MediaPlayer::MediaPlayer( QObject *parent, const char *name ) |
40 | : QObject( parent, name ), volumeDirection( 0 ), currentFile( NULL ) { | 40 | : QObject( parent, name ), volumeDirection( 0 ), currentFile( NULL ) { |
41 | 41 | ||
42 | // QPEApplication::grabKeyboard(); | 42 | // QPEApplication::grabKeyboard(); |
43 | connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); | 43 | connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); |
44 | 44 | ||
45 | connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( setPlaying( bool ) ) ); | 45 | connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) ); |
46 | connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pauseCheck( bool ) ) ); | 46 | connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( pauseCheck(bool) ) ); |
47 | connect( mediaPlayerState, SIGNAL( next() ), this, SLOT( next() ) ); | 47 | connect( mediaPlayerState, SIGNAL( next() ), this, SLOT( next() ) ); |
48 | connect( mediaPlayerState, SIGNAL( prev() ), this, SLOT( prev() ) ); | 48 | connect( mediaPlayerState, SIGNAL( prev() ), this, SLOT( prev() ) ); |
49 | 49 | ||
50 | connect( audioUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) ); | 50 | connect( audioUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) ); |
51 | connect( audioUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) ); | 51 | connect( audioUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) ); |
52 | connect( audioUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) ); | 52 | connect( audioUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) ); |
53 | connect( audioUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) ); | 53 | connect( audioUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) ); |
54 | } | 54 | } |
55 | 55 | ||
56 | 56 | ||
57 | MediaPlayer::~MediaPlayer() { | 57 | MediaPlayer::~MediaPlayer() { |
58 | 58 | ||
59 | } | 59 | } |
60 | 60 | ||
61 | 61 | ||
62 | void MediaPlayer::pauseCheck( bool b ) { | 62 | void MediaPlayer::pauseCheck( bool b ) { |
63 | // Only pause if playing | 63 | // Only pause if playing |
64 | if ( b && !mediaPlayerState->playing() ) | 64 | if ( b && !mediaPlayerState->playing() ) |
65 | mediaPlayerState->setPaused( FALSE ); | 65 | mediaPlayerState->setPaused( FALSE ); |
66 | } | 66 | } |
67 | 67 | ||
68 | 68 | ||
69 | void MediaPlayer::play() { | 69 | void MediaPlayer::play() { |
70 | mediaPlayerState->setPlaying( FALSE ); | 70 | mediaPlayerState->setPlaying( FALSE ); |
71 | mediaPlayerState->setPlaying( TRUE ); | 71 | mediaPlayerState->setPlaying( TRUE ); |
72 | } | 72 | } |
73 | 73 | ||
74 | 74 | ||
75 | void MediaPlayer::setPlaying( bool play ) { | 75 | void MediaPlayer::setPlaying( bool play ) { |
76 | // qDebug("MediaPlayer setPlaying %d", play); | 76 | // qDebug("MediaPlayer setPlaying %d", play); |
77 | if ( !play ) { | 77 | if ( !play ) { |
78 | mediaPlayerState->setPaused( FALSE ); | 78 | mediaPlayerState->setPaused( FALSE ); |
79 | loopControl->stop( FALSE ); | 79 | loopControl->stop( FALSE ); |
80 | return; | 80 | return; |
81 | } | 81 | } |
82 | 82 | ||
83 | if ( mediaPlayerState->paused() ) { | 83 | if ( mediaPlayerState->paused() ) { |
84 | mediaPlayerState->setPaused( FALSE ); | 84 | mediaPlayerState->setPaused( FALSE ); |
85 | return; | 85 | return; |
86 | } | 86 | } |
87 | // qDebug("about to ctrash"); | 87 | // qDebug("about to ctrash"); |
88 | const DocLnk *playListCurrent = playList->current(); | 88 | const DocLnk *playListCurrent = playList->current(); |
89 | 89 | ||
90 | if ( playListCurrent != NULL ) { | 90 | if ( playListCurrent != NULL ) { |
91 | loopControl->stop( TRUE ); | 91 | loopControl->stop( TRUE ); |
92 | currentFile = playListCurrent; | 92 | currentFile = playListCurrent; |
93 | } | 93 | } |
94 | if ( currentFile == NULL ) { | 94 | if ( currentFile == NULL ) { |
95 | QMessageBox::critical( 0, tr( "No file"), tr( "Error: There is no file selected" ) ); | 95 | QMessageBox::critical( 0, tr( "No file"), tr( "Error: There is no file selected" ) ); |
96 | mediaPlayerState->setPlaying( FALSE ); | 96 | mediaPlayerState->setPlaying( FALSE ); |
97 | return; | 97 | return; |
98 | } | 98 | } |
99 | 99 | ||
100 | if ( ((currentFile->file()).left(4) != "http") && !QFile::exists( currentFile->file() ) ) { | 100 | if ( ((currentFile->file()).left(4) != "http") && !QFile::exists( currentFile->file() ) ) { |
101 | QMessageBox::critical( 0, tr( "File not found"), | 101 | QMessageBox::critical( 0, tr( "File not found"), |
102 | tr( "The following file was not found: <i>" ) | 102 | tr( "The following file was not found: <i>" ) |
103 | + currentFile->file() + "</i>" ); | 103 | + currentFile->file() + "</i>" ); |
104 | mediaPlayerState->setPlaying( FALSE ); | 104 | mediaPlayerState->setPlaying( FALSE ); |
105 | return; | 105 | return; |
106 | } | 106 | } |
107 | 107 | ||
108 | if ( !mediaPlayerState->newDecoder( currentFile->file() ) ) { | 108 | if ( !mediaPlayerState->newDecoder( currentFile->file() ) ) { |
109 | QMessageBox::critical( 0, tr( "No decoder found"), | 109 | QMessageBox::critical( 0, tr( "No decoder found"), |
110 | tr( "Sorry, no appropriate decoders found for this file: <i>" ) | 110 | tr( "Sorry, no appropriate decoders found for this file: <i>" ) |
111 | + currentFile->file() + "</i>" ); | 111 | + currentFile->file() + "</i>" ); |
112 | mediaPlayerState->setPlaying( FALSE ); | 112 | mediaPlayerState->setPlaying( FALSE ); |
113 | return; | 113 | return; |
114 | } | 114 | } |
115 | 115 | ||
116 | if ( !loopControl->init( currentFile->file() ) ) { | 116 | if ( !loopControl->init( currentFile->file() ) ) { |
117 | QMessageBox::critical( 0, tr( "Error opening file"), | 117 | QMessageBox::critical( 0, tr( "Error opening file"), |
118 | tr( "Sorry, an error occured trying to play the file: <i>" ) + currentFile->file() + "</i>" ); | 118 | tr( "Sorry, an error occured trying to play the file: <i>" ) + currentFile->file() + "</i>" ); |
119 | mediaPlayerState->setPlaying( FALSE ); | 119 | mediaPlayerState->setPlaying( FALSE ); |
120 | return; | 120 | return; |
121 | } | 121 | } |
122 | long seconds = loopControl->totalPlaytime(); | 122 | long seconds = loopControl->totalPlaytime(); |
123 | QString time; time.sprintf("%li:%02i", seconds/60, (int)seconds%60 ); | 123 | QString time; time.sprintf("%li:%02i", seconds/60, (int)seconds%60 ); |
124 | QString tickerText; | 124 | QString tickerText; |
125 | if( currentFile->file().left(4) == "http" ) | 125 | if( currentFile->file().left(4) == "http" ) |
126 | tickerText= tr( " File: " ) + currentFile->name(); | 126 | tickerText= tr( " File: " ) + currentFile->name(); |
127 | else | 127 | else |
128 | tickerText = tr( " File: " ) + currentFile->name() + tr(", Length: ") + time; | 128 | tickerText = tr( " File: " ) + currentFile->name() + tr(", Length: ") + time; |
129 | 129 | ||
130 | QString fileInfo = mediaPlayerState->curDecoder()->fileInfo(); | 130 | QString fileInfo = mediaPlayerState->curDecoder()->fileInfo(); |
131 | if ( !fileInfo.isEmpty() ) | 131 | if ( !fileInfo.isEmpty() ) |
132 | tickerText += ", " + fileInfo; | 132 | tickerText += ", " + fileInfo; |
133 | audioUI->setTickerText( tickerText + "." ); | 133 | audioUI->setTickerText( tickerText + "." ); |
134 | 134 | ||
135 | loopControl->play(); | 135 | loopControl->play(); |
136 | 136 | ||
137 | mediaPlayerState->setView( loopControl->hasVideo() ? 'v' : 'a' ); | 137 | mediaPlayerState->setView( loopControl->hasVideo() ? 'v' : 'a' ); |
138 | } | 138 | } |
139 | 139 | ||
140 | 140 | ||
141 | void MediaPlayer::prev() { | 141 | void MediaPlayer::prev() { |
142 | if ( playList->prev() ) | 142 | if ( playList->prev() ) |
diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp index a359843..efb5df3 100644 --- a/core/multimedia/opieplayer/playlistwidget.cpp +++ b/core/multimedia/opieplayer/playlistwidget.cpp | |||
@@ -26,401 +26,401 @@ | |||
26 | 26 | ||
27 | #include <qaction.h> | 27 | #include <qaction.h> |
28 | #include <qlayout.h> | 28 | #include <qlayout.h> |
29 | #include <qmessagebox.h> | 29 | #include <qmessagebox.h> |
30 | 30 | ||
31 | //#include <qtimer.h> | 31 | //#include <qtimer.h> |
32 | 32 | ||
33 | #include "playlistselection.h" | 33 | #include "playlistselection.h" |
34 | #include "playlistwidget.h" | 34 | #include "playlistwidget.h" |
35 | #include "mediaplayerstate.h" | 35 | #include "mediaplayerstate.h" |
36 | 36 | ||
37 | #include "inputDialog.h" | 37 | #include "inputDialog.h" |
38 | 38 | ||
39 | #include <stdlib.h> | 39 | #include <stdlib.h> |
40 | #include "audiowidget.h" | 40 | #include "audiowidget.h" |
41 | #include "videowidget.h" | 41 | #include "videowidget.h" |
42 | 42 | ||
43 | #include <unistd.h> | 43 | #include <unistd.h> |
44 | #include <sys/file.h> | 44 | #include <sys/file.h> |
45 | #include <sys/ioctl.h> | 45 | #include <sys/ioctl.h> |
46 | #include <sys/soundcard.h> | 46 | #include <sys/soundcard.h> |
47 | 47 | ||
48 | // for setBacklight() | 48 | // for setBacklight() |
49 | #include <linux/fb.h> | 49 | #include <linux/fb.h> |
50 | #include <sys/types.h> | 50 | #include <sys/types.h> |
51 | #include <sys/stat.h> | 51 | #include <sys/stat.h> |
52 | #include <stdlib.h> | 52 | #include <stdlib.h> |
53 | 53 | ||
54 | #define BUTTONS_ON_TOOLBAR | 54 | #define BUTTONS_ON_TOOLBAR |
55 | #define SIDE_BUTTONS | 55 | #define SIDE_BUTTONS |
56 | #define CAN_SAVE_LOAD_PLAYLISTS | 56 | #define CAN_SAVE_LOAD_PLAYLISTS |
57 | 57 | ||
58 | extern AudioWidget *audioUI; | 58 | extern AudioWidget *audioUI; |
59 | extern VideoWidget *videoUI; | 59 | extern VideoWidget *videoUI; |
60 | extern MediaPlayerState *mediaPlayerState; | 60 | extern MediaPlayerState *mediaPlayerState; |
61 | 61 | ||
62 | static inline QString fullBaseName ( const QFileInfo &fi ) | 62 | static inline QString fullBaseName ( const QFileInfo &fi ) |
63 | { | 63 | { |
64 | QString str = fi. fileName ( ); | 64 | QString str = fi. fileName ( ); |
65 | return str. left ( str. findRev ( '.' )); | 65 | return str. left ( str. findRev ( '.' )); |
66 | } | 66 | } |
67 | 67 | ||
68 | 68 | ||
69 | QString audioMimes ="audio/mpeg;audio/x-wav;application/ogg;audio/x-mod"; | 69 | QString audioMimes ="audio/mpeg;audio/x-wav;application/ogg;audio/x-mod"; |
70 | // class myFileSelector { | 70 | // class myFileSelector { |
71 | 71 | ||
72 | // }; | 72 | // }; |
73 | class PlayListWidgetPrivate { | 73 | class PlayListWidgetPrivate { |
74 | public: | 74 | public: |
75 | QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove; | 75 | QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove; |
76 | QFrame *playListFrame; | 76 | QFrame *playListFrame; |
77 | FileSelector *files; | 77 | FileSelector *files; |
78 | PlayListSelection *selectedFiles; | 78 | PlayListSelection *selectedFiles; |
79 | bool setDocumentUsed; | 79 | bool setDocumentUsed; |
80 | DocLnk *current; | 80 | DocLnk *current; |
81 | }; | 81 | }; |
82 | 82 | ||
83 | 83 | ||
84 | class ToolButton : public QToolButton { | 84 | class ToolButton : public QToolButton { |
85 | public: | 85 | public: |
86 | ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE ) | 86 | ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE ) |
87 | : QToolButton( parent, name ) { | 87 | : QToolButton( parent, name ) { |
88 | setTextLabel( name ); | 88 | setTextLabel( name ); |
89 | setPixmap( Resource::loadPixmap( icon ) ); | 89 | setPixmap( Resource::loadPixmap( icon ) ); |
90 | setAutoRaise( TRUE ); | 90 | setAutoRaise( TRUE ); |
91 | setFocusPolicy( QWidget::NoFocus ); | 91 | setFocusPolicy( QWidget::NoFocus ); |
92 | setToggleButton( t ); | 92 | setToggleButton( t ); |
93 | connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot ); | 93 | connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot ); |
94 | QPEMenuToolFocusManager::manager()->addWidget( this ); | 94 | QPEMenuToolFocusManager::manager()->addWidget( this ); |
95 | } | 95 | } |
96 | }; | 96 | }; |
97 | 97 | ||
98 | 98 | ||
99 | class MenuItem : public QAction { | 99 | class MenuItem : public QAction { |
100 | public: | 100 | public: |
101 | MenuItem( QWidget *parent, const QString& text, QObject *handler, const QString& slot ) | 101 | MenuItem( QWidget *parent, const QString& text, QObject *handler, const QString& slot ) |
102 | : QAction( text, QString::null, 0, 0 ) { | 102 | : QAction( text, QString::null, 0, 0 ) { |
103 | connect( this, SIGNAL( activated() ), handler, slot ); | 103 | connect( this, SIGNAL( activated() ), handler, slot ); |
104 | addTo( parent ); | 104 | addTo( parent ); |
105 | } | 105 | } |
106 | }; | 106 | }; |
107 | 107 | ||
108 | 108 | ||
109 | PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) | 109 | PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) |
110 | : QMainWindow( parent, name, fl ) { | 110 | : QMainWindow( parent, name, fl ) { |
111 | 111 | ||
112 | d = new PlayListWidgetPrivate; | 112 | d = new PlayListWidgetPrivate; |
113 | d->setDocumentUsed = FALSE; | 113 | d->setDocumentUsed = FALSE; |
114 | d->current = NULL; | 114 | d->current = NULL; |
115 | fromSetDocument = FALSE; | 115 | fromSetDocument = FALSE; |
116 | insanityBool=FALSE; | 116 | insanityBool=FALSE; |
117 | audioScan = FALSE; | 117 | audioScan = FALSE; |
118 | videoScan = FALSE; | 118 | videoScan = FALSE; |
119 | // menuTimer = new QTimer( this ,"menu timer"), | 119 | // menuTimer = new QTimer( this ,"menu timer"), |
120 | // connect( menuTimer, SIGNAL( timeout() ), SLOT( addSelected() ) ); | 120 | // connect( menuTimer, SIGNAL( timeout() ), SLOT( addSelected() ) ); |
121 | channel = new QCopChannel( "QPE/Application/opieplayer", this ); | 121 | channel = new QCopChannel( "QPE/Application/opieplayer", this ); |
122 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), | 122 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
123 | this, SLOT( qcopReceive(const QCString&, const QByteArray&)) ); | 123 | this, SLOT( qcopReceive(const QCString&,const QByteArray&)) ); |
124 | 124 | ||
125 | setBackgroundMode( PaletteButton ); | 125 | setBackgroundMode( PaletteButton ); |
126 | 126 | ||
127 | setCaption( tr("OpiePlayer") ); | 127 | setCaption( tr("OpiePlayer") ); |
128 | setIcon( Resource::loadPixmap( "opieplayer/MPEGPlayer" ) ); | 128 | setIcon( Resource::loadPixmap( "opieplayer/MPEGPlayer" ) ); |
129 | 129 | ||
130 | setToolBarsMovable( FALSE ); | 130 | setToolBarsMovable( FALSE ); |
131 | 131 | ||
132 | // Create Toolbar | 132 | // Create Toolbar |
133 | QToolBar *toolbar = new QToolBar( this ); | 133 | QToolBar *toolbar = new QToolBar( this ); |
134 | toolbar->setHorizontalStretchable( TRUE ); | 134 | toolbar->setHorizontalStretchable( TRUE ); |
135 | 135 | ||
136 | // Create Menubar | 136 | // Create Menubar |
137 | QMenuBar *menu = new QMenuBar( toolbar ); | 137 | QMenuBar *menu = new QMenuBar( toolbar ); |
138 | menu->setMargin( 0 ); | 138 | menu->setMargin( 0 ); |
139 | 139 | ||
140 | QToolBar *bar = new QToolBar( this ); | 140 | QToolBar *bar = new QToolBar( this ); |
141 | bar->setLabel( tr( "Play Operations" ) ); | 141 | bar->setLabel( tr( "Play Operations" ) ); |
142 | // d->tbPlayCurList = new ToolButton( bar, tr( "play List" ), "opieplayer/play_current_list", | 142 | // d->tbPlayCurList = new ToolButton( bar, tr( "play List" ), "opieplayer/play_current_list", |
143 | // this , SLOT( addSelected()) ); | 143 | // this , SLOT( addSelected()) ); |
144 | tbDeletePlaylist = new QPushButton( Resource::loadIconSet("trash"),"",bar,"close"); | 144 | tbDeletePlaylist = new QPushButton( Resource::loadIconSet("trash"),"",bar,"close"); |
145 | tbDeletePlaylist->setFlat(TRUE); | 145 | tbDeletePlaylist->setFlat(TRUE); |
146 | 146 | ||
147 | tbDeletePlaylist->setFixedSize(20,20); | 147 | tbDeletePlaylist->setFixedSize(20,20); |
148 | 148 | ||
149 | d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer/add_to_playlist", | 149 | d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer/add_to_playlist", |
150 | this , SLOT(addSelected()) ); | 150 | this , SLOT(addSelected()) ); |
151 | d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "opieplayer/remove_from_playlist", | 151 | d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "opieplayer/remove_from_playlist", |
152 | this , SLOT(removeSelected()) ); | 152 | this , SLOT(removeSelected()) ); |
153 | // d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", /*this */mediaPlayerState , SLOT(setPlaying(bool) /* btnPlay() */), TRUE ); | 153 | // d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", /*this */mediaPlayerState , SLOT(setPlaying(bool)/*btnPlay()*/), TRUE ); |
154 | d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", | 154 | d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", |
155 | this , SLOT( btnPlay(bool) ), TRUE ); | 155 | this , SLOT( btnPlay(bool) ), TRUE ); |
156 | d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer/shuffle", | 156 | d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer/shuffle", |
157 | mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); | 157 | mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); |
158 | d->tbLoop = new ToolButton( bar, tr( "Loop" ),"opieplayer/loop", | 158 | d->tbLoop = new ToolButton( bar, tr( "Loop" ),"opieplayer/loop", |
159 | mediaPlayerState, SLOT(setLooping(bool)), TRUE ); | 159 | mediaPlayerState, SLOT(setLooping(bool)), TRUE ); |
160 | tbDeletePlaylist->hide(); | 160 | tbDeletePlaylist->hide(); |
161 | 161 | ||
162 | QPopupMenu *pmPlayList = new QPopupMenu( this ); | 162 | QPopupMenu *pmPlayList = new QPopupMenu( this ); |
163 | menu->insertItem( tr( "File" ), pmPlayList ); | 163 | menu->insertItem( tr( "File" ), pmPlayList ); |
164 | new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); | 164 | new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); |
165 | new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) ); | 165 | new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) ); |
166 | new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) ); | 166 | new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) ); |
167 | new MenuItem( pmPlayList, tr( "Add all files" ), this, SLOT( addAllToList() ) ); | 167 | new MenuItem( pmPlayList, tr( "Add all files" ), this, SLOT( addAllToList() ) ); |
168 | pmPlayList->insertSeparator(-1); | 168 | pmPlayList->insertSeparator(-1); |
169 | new MenuItem( pmPlayList, tr( "Save PlayList" ), this, SLOT( saveList() ) ); | 169 | new MenuItem( pmPlayList, tr( "Save PlayList" ), this, SLOT( saveList() ) ); |
170 | new MenuItem( pmPlayList, tr( "Open File or URL" ), this,SLOT( openFile() ) ); | 170 | new MenuItem( pmPlayList, tr( "Open File or URL" ), this,SLOT( openFile() ) ); |
171 | pmPlayList->insertSeparator(-1); | 171 | pmPlayList->insertSeparator(-1); |
172 | new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), this,SLOT( scanForAudio() ) ); | 172 | new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), this,SLOT( scanForAudio() ) ); |
173 | new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), this,SLOT( scanForVideo() ) ); | 173 | new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), this,SLOT( scanForVideo() ) ); |
174 | 174 | ||
175 | QPopupMenu *pmView = new QPopupMenu( this ); | 175 | QPopupMenu *pmView = new QPopupMenu( this ); |
176 | menu->insertItem( tr( "View" ), pmView ); | 176 | menu->insertItem( tr( "View" ), pmView ); |
177 | 177 | ||
178 | fullScreenButton = new QAction(tr("Full Screen"), Resource::loadPixmap("fullscreen"), QString::null, 0, this, 0); | 178 | fullScreenButton = new QAction(tr("Full Screen"), Resource::loadPixmap("fullscreen"), QString::null, 0, this, 0); |
179 | fullScreenButton->addTo(pmView); | 179 | fullScreenButton->addTo(pmView); |
180 | scaleButton = new QAction(tr("Scale"), Resource::loadPixmap("opieplayer/scale"), QString::null, 0, this, 0); | 180 | scaleButton = new QAction(tr("Scale"), Resource::loadPixmap("opieplayer/scale"), QString::null, 0, this, 0); |
181 | scaleButton->addTo(pmView); | 181 | scaleButton->addTo(pmView); |
182 | 182 | ||
183 | 183 | ||
184 | skinsMenu = new QPopupMenu( this ); | 184 | skinsMenu = new QPopupMenu( this ); |
185 | menu->insertItem( tr( "Skins" ), skinsMenu ); | 185 | menu->insertItem( tr( "Skins" ), skinsMenu ); |
186 | skinsMenu->isCheckable(); | 186 | skinsMenu->isCheckable(); |
187 | connect( skinsMenu, SIGNAL( activated( int ) ) , | 187 | connect( skinsMenu, SIGNAL( activated(int) ) , |
188 | this, SLOT( skinsMenuActivated( int ) ) ); | 188 | this, SLOT( skinsMenuActivated(int) ) ); |
189 | populateSkinsMenu(); | 189 | populateSkinsMenu(); |
190 | 190 | ||
191 | QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton ); | 191 | QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton ); |
192 | QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton ); | 192 | QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton ); |
193 | 193 | ||
194 | QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton ); | 194 | QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton ); |
195 | 195 | ||
196 | tabWidget = new QTabWidget( hbox6, "tabWidget" ); | 196 | tabWidget = new QTabWidget( hbox6, "tabWidget" ); |
197 | // tabWidget->setTabShape(QTabWidget::Triangular); | 197 | // tabWidget->setTabShape(QTabWidget::Triangular); |
198 | 198 | ||
199 | QWidget *pTab; | 199 | QWidget *pTab; |
200 | pTab = new QWidget( tabWidget, "pTab" ); | 200 | pTab = new QWidget( tabWidget, "pTab" ); |
201 | // playlistView = new QListView( pTab, "playlistview" ); | 201 | // playlistView = new QListView( pTab, "playlistview" ); |
202 | // playlistView->setMinimumSize(236,260); | 202 | // playlistView->setMinimumSize(236,260); |
203 | tabWidget->insertTab( pTab,"Playlist"); | 203 | tabWidget->insertTab( pTab,"Playlist"); |
204 | 204 | ||
205 | 205 | ||
206 | // Add the playlist area | 206 | // Add the playlist area |
207 | 207 | ||
208 | QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton ); | 208 | QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton ); |
209 | d->playListFrame = vbox3; | 209 | d->playListFrame = vbox3; |
210 | 210 | ||
211 | QGridLayout *layoutF = new QGridLayout( pTab ); | 211 | QGridLayout *layoutF = new QGridLayout( pTab ); |
212 | layoutF->setSpacing( 2); | 212 | layoutF->setSpacing( 2); |
213 | layoutF->setMargin( 2); | 213 | layoutF->setMargin( 2); |
214 | layoutF->addMultiCellWidget( d->playListFrame , 0, 0, 0, 1 ); | 214 | layoutF->addMultiCellWidget( d->playListFrame , 0, 0, 0, 1 ); |
215 | 215 | ||
216 | QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton ); | 216 | QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton ); |
217 | 217 | ||
218 | d->selectedFiles = new PlayListSelection( hbox2); | 218 | d->selectedFiles = new PlayListSelection( hbox2); |
219 | QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton ); | 219 | QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton ); |
220 | 220 | ||
221 | QPEApplication::setStylusOperation( d->selectedFiles->viewport(),QPEApplication::RightOnHold); | 221 | QPEApplication::setStylusOperation( d->selectedFiles->viewport(),QPEApplication::RightOnHold); |
222 | 222 | ||
223 | 223 | ||
224 | 224 | ||
225 | QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch | 225 | QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch |
226 | new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) ); | 226 | new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) ); |
227 | new ToolButton( vbox1, tr( "Remove" ), "opieplayer/cut", d->selectedFiles, SLOT(removeSelected()) ); | 227 | new ToolButton( vbox1, tr( "Remove" ), "opieplayer/cut", d->selectedFiles, SLOT(removeSelected()) ); |
228 | new ToolButton( vbox1, tr( "Move Down" ), "opieplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) ); | 228 | new ToolButton( vbox1, tr( "Move Down" ), "opieplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) ); |
229 | QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch | 229 | QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch |
230 | 230 | ||
231 | QWidget *aTab; | 231 | QWidget *aTab; |
232 | aTab = new QWidget( tabWidget, "aTab" ); | 232 | aTab = new QWidget( tabWidget, "aTab" ); |
233 | audioView = new QListView( aTab, "Audioview" ); | 233 | audioView = new QListView( aTab, "Audioview" ); |
234 | 234 | ||
235 | QGridLayout *layoutA = new QGridLayout( aTab ); | 235 | QGridLayout *layoutA = new QGridLayout( aTab ); |
236 | layoutA->setSpacing( 2); | 236 | layoutA->setSpacing( 2); |
237 | layoutA->setMargin( 2); | 237 | layoutA->setMargin( 2); |
238 | layoutA->addMultiCellWidget( audioView, 0, 0, 0, 1 ); | 238 | layoutA->addMultiCellWidget( audioView, 0, 0, 0, 1 ); |
239 | 239 | ||
240 | audioView->addColumn( tr("Title"),-1); | 240 | audioView->addColumn( tr("Title"),-1); |
241 | audioView->addColumn(tr("Size"), -1); | 241 | audioView->addColumn(tr("Size"), -1); |
242 | audioView->addColumn(tr("Media"),-1); | 242 | audioView->addColumn(tr("Media"),-1); |
243 | audioView->addColumn( tr( "Path" ), -1 ); | 243 | audioView->addColumn( tr( "Path" ), -1 ); |
244 | 244 | ||
245 | audioView->setColumnAlignment(1, Qt::AlignRight); | 245 | audioView->setColumnAlignment(1, Qt::AlignRight); |
246 | audioView->setColumnAlignment(2, Qt::AlignRight); | 246 | audioView->setColumnAlignment(2, Qt::AlignRight); |
247 | audioView->setAllColumnsShowFocus(TRUE); | 247 | audioView->setAllColumnsShowFocus(TRUE); |
248 | 248 | ||
249 | audioView->setMultiSelection( TRUE ); | 249 | audioView->setMultiSelection( TRUE ); |
250 | audioView->setSelectionMode( QListView::Extended); | 250 | audioView->setSelectionMode( QListView::Extended); |
251 | audioView->setSorting( 3, TRUE ); | 251 | audioView->setSorting( 3, TRUE ); |
252 | 252 | ||
253 | tabWidget->insertTab(aTab,tr("Audio")); | 253 | tabWidget->insertTab(aTab,tr("Audio")); |
254 | 254 | ||
255 | QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold); | 255 | QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold); |
256 | 256 | ||
257 | // audioView | 257 | // audioView |
258 | // populateAudioView(); | 258 | // populateAudioView(); |
259 | // videowidget | 259 | // videowidget |
260 | 260 | ||
261 | QWidget *vTab; | 261 | QWidget *vTab; |
262 | vTab = new QWidget( tabWidget, "vTab" ); | 262 | vTab = new QWidget( tabWidget, "vTab" ); |
263 | videoView = new QListView( vTab, "Videoview" ); | 263 | videoView = new QListView( vTab, "Videoview" ); |
264 | 264 | ||
265 | QGridLayout *layoutV = new QGridLayout( vTab ); | 265 | QGridLayout *layoutV = new QGridLayout( vTab ); |
266 | layoutV->setSpacing( 2); | 266 | layoutV->setSpacing( 2); |
267 | layoutV->setMargin( 2); | 267 | layoutV->setMargin( 2); |
268 | layoutV->addMultiCellWidget( videoView, 0, 0, 0, 1 ); | 268 | layoutV->addMultiCellWidget( videoView, 0, 0, 0, 1 ); |
269 | 269 | ||
270 | videoView->addColumn(tr("Title"),-1); | 270 | videoView->addColumn(tr("Title"),-1); |
271 | videoView->addColumn(tr("Size"),-1); | 271 | videoView->addColumn(tr("Size"),-1); |
272 | videoView->addColumn(tr("Media"),-1); | 272 | videoView->addColumn(tr("Media"),-1); |
273 | videoView->addColumn(tr( "Path" ), -1 ); | 273 | videoView->addColumn(tr( "Path" ), -1 ); |
274 | videoView->setColumnAlignment(1, Qt::AlignRight); | 274 | videoView->setColumnAlignment(1, Qt::AlignRight); |
275 | videoView->setColumnAlignment(2, Qt::AlignRight); | 275 | videoView->setColumnAlignment(2, Qt::AlignRight); |
276 | videoView->setAllColumnsShowFocus(TRUE); | 276 | videoView->setAllColumnsShowFocus(TRUE); |
277 | videoView->setMultiSelection( TRUE ); | 277 | videoView->setMultiSelection( TRUE ); |
278 | videoView->setSelectionMode( QListView::Extended); | 278 | videoView->setSelectionMode( QListView::Extended); |
279 | 279 | ||
280 | QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold); | 280 | QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold); |
281 | 281 | ||
282 | tabWidget->insertTab( vTab,tr("Video")); | 282 | tabWidget->insertTab( vTab,tr("Video")); |
283 | 283 | ||
284 | QWidget *LTab; | 284 | QWidget *LTab; |
285 | LTab = new QWidget( tabWidget, "LTab" ); | 285 | LTab = new QWidget( tabWidget, "LTab" ); |
286 | playLists = new FileSelector( "playlist/plain;audio/x-mpegurl", LTab, "fileselector" , FALSE, FALSE); | 286 | playLists = new FileSelector( "playlist/plain;audio/x-mpegurl", LTab, "fileselector" , FALSE, FALSE); |
287 | 287 | ||
288 | QGridLayout *layoutL = new QGridLayout( LTab ); | 288 | QGridLayout *layoutL = new QGridLayout( LTab ); |
289 | layoutL->setSpacing( 2); | 289 | layoutL->setSpacing( 2); |
290 | layoutL->setMargin( 2); | 290 | layoutL->setMargin( 2); |
291 | layoutL->addMultiCellWidget( playLists, 0, 0, 0, 1 ); | 291 | layoutL->addMultiCellWidget( playLists, 0, 0, 0, 1 ); |
292 | 292 | ||
293 | tabWidget->insertTab(LTab,tr("Lists")); | 293 | tabWidget->insertTab(LTab,tr("Lists")); |
294 | 294 | ||
295 | connect(tbDeletePlaylist,(SIGNAL(released())),SLOT( deletePlaylist())); | 295 | connect(tbDeletePlaylist,(SIGNAL(released())),SLOT( deletePlaylist())); |
296 | connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) ); | 296 | connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) ); |
297 | connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) ); | 297 | connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) ); |
298 | 298 | ||
299 | connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), | 299 | connect( d->selectedFiles, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)), |
300 | this,SLOT( playlistViewPressed(int, QListViewItem *, const QPoint&, int)) ); | 300 | this,SLOT( playlistViewPressed(int,QListViewItem*,const QPoint&,int)) ); |
301 | 301 | ||
302 | 302 | ||
303 | ///audioView | 303 | ///audioView |
304 | connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), | 304 | connect( audioView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)), |
305 | this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); | 305 | this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int)) ); |
306 | 306 | ||
307 | connect( audioView, SIGNAL( returnPressed( QListViewItem *)), | 307 | connect( audioView, SIGNAL( returnPressed(QListViewItem*)), |
308 | this,SLOT( playIt( QListViewItem *)) ); | 308 | this,SLOT( playIt(QListViewItem*)) ); |
309 | connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); | 309 | connect( audioView, SIGNAL( doubleClicked(QListViewItem*) ), this, SLOT( addToSelection(QListViewItem*) ) ); |
310 | 310 | ||
311 | 311 | ||
312 | //videoView | 312 | //videoView |
313 | connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), | 313 | connect( videoView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)), |
314 | this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); | 314 | this,SLOT( viewPressed(int,QListViewItem*,const QPoint&,int)) ); |
315 | connect( videoView, SIGNAL( returnPressed( QListViewItem *)), | 315 | connect( videoView, SIGNAL( returnPressed(QListViewItem*)), |
316 | this,SLOT( playIt( QListViewItem *)) ); | 316 | this,SLOT( playIt(QListViewItem*)) ); |
317 | connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); | 317 | connect( videoView, SIGNAL( doubleClicked(QListViewItem*) ), this, SLOT( addToSelection(QListViewItem*) ) ); |
318 | 318 | ||
319 | //playlists | 319 | //playlists |
320 | connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) ); | 320 | connect( playLists, SIGNAL( fileSelected(const DocLnk&) ), this, SLOT( loadList(const DocLnk&) ) ); |
321 | 321 | ||
322 | connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*))); | 322 | connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*))); |
323 | 323 | ||
324 | connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) ); | 324 | connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), d->tbPlay, SLOT( setOn(bool) ) ); |
325 | 325 | ||
326 | connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) ); | 326 | connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), d->tbLoop, SLOT( setOn(bool) ) ); |
327 | connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) ); | 327 | connect( mediaPlayerState, SIGNAL( shuffledToggled(bool) ), d->tbShuffle, SLOT( setOn(bool) ) ); |
328 | connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) ); | 328 | connect( mediaPlayerState, SIGNAL( playlistToggled(bool) ), this, SLOT( setPlaylist(bool) ) ); |
329 | 329 | ||
330 | connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); | 330 | connect( d->selectedFiles, SIGNAL( doubleClicked(QListViewItem*) ), this, SLOT( playIt(QListViewItem*) ) ); |
331 | 331 | ||
332 | setCentralWidget( vbox5 ); | 332 | setCentralWidget( vbox5 ); |
333 | 333 | ||
334 | Config cfg( "OpiePlayer" ); | 334 | Config cfg( "OpiePlayer" ); |
335 | readConfig( cfg ); | 335 | readConfig( cfg ); |
336 | 336 | ||
337 | currentPlayList = cfg.readEntry("CurrentPlaylist","default"); | 337 | currentPlayList = cfg.readEntry("CurrentPlaylist","default"); |
338 | loadList(DocLnk( currentPlayList)); | 338 | loadList(DocLnk( currentPlayList)); |
339 | setCaption(tr("OpiePlayer: ")+ fullBaseName ( QFileInfo(currentPlayList))); | 339 | setCaption(tr("OpiePlayer: ")+ fullBaseName ( QFileInfo(currentPlayList))); |
340 | 340 | ||
341 | initializeStates(); | 341 | initializeStates(); |
342 | } | 342 | } |
343 | 343 | ||
344 | 344 | ||
345 | PlayListWidget::~PlayListWidget() { | 345 | PlayListWidget::~PlayListWidget() { |
346 | Config cfg( "OpiePlayer" ); | 346 | Config cfg( "OpiePlayer" ); |
347 | writeConfig( cfg ); | 347 | writeConfig( cfg ); |
348 | 348 | ||
349 | if ( d->current ) | 349 | if ( d->current ) |
350 | delete d->current; | 350 | delete d->current; |
351 | if(d) delete d; | 351 | if(d) delete d; |
352 | } | 352 | } |
353 | 353 | ||
354 | 354 | ||
355 | void PlayListWidget::initializeStates() { | 355 | void PlayListWidget::initializeStates() { |
356 | 356 | ||
357 | d->tbPlay->setOn( mediaPlayerState->playing() ); | 357 | d->tbPlay->setOn( mediaPlayerState->playing() ); |
358 | d->tbLoop->setOn( mediaPlayerState->looping() ); | 358 | d->tbLoop->setOn( mediaPlayerState->looping() ); |
359 | d->tbShuffle->setOn( mediaPlayerState->shuffled() ); | 359 | d->tbShuffle->setOn( mediaPlayerState->shuffled() ); |
360 | setPlaylist( true); | 360 | setPlaylist( true); |
361 | } | 361 | } |
362 | 362 | ||
363 | 363 | ||
364 | void PlayListWidget::readConfig( Config& cfg ) { | 364 | void PlayListWidget::readConfig( Config& cfg ) { |
365 | cfg.setGroup("PlayList"); | 365 | cfg.setGroup("PlayList"); |
366 | QString currentString = cfg.readEntry("current", "" ); | 366 | QString currentString = cfg.readEntry("current", "" ); |
367 | int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); | 367 | int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); |
368 | for ( int i = 0; i < noOfFiles; i++ ) { | 368 | for ( int i = 0; i < noOfFiles; i++ ) { |
369 | QString entryName; | 369 | QString entryName; |
370 | entryName.sprintf( "File%i", i + 1 ); | 370 | entryName.sprintf( "File%i", i + 1 ); |
371 | QString linkFile = cfg.readEntry( entryName ); | 371 | QString linkFile = cfg.readEntry( entryName ); |
372 | DocLnk lnk( linkFile ); | 372 | DocLnk lnk( linkFile ); |
373 | if ( lnk.isValid() ) { | 373 | if ( lnk.isValid() ) { |
374 | d->selectedFiles->addToSelection( lnk ); | 374 | d->selectedFiles->addToSelection( lnk ); |
375 | } | 375 | } |
376 | } | 376 | } |
377 | d->selectedFiles->setSelectedItem( currentString); | 377 | d->selectedFiles->setSelectedItem( currentString); |
378 | } | 378 | } |
379 | 379 | ||
380 | 380 | ||
381 | void PlayListWidget::writeConfig( Config& cfg ) const { | 381 | void PlayListWidget::writeConfig( Config& cfg ) const { |
382 | 382 | ||
383 | d->selectedFiles->writeCurrent( cfg); | 383 | d->selectedFiles->writeCurrent( cfg); |
384 | cfg.setGroup("PlayList"); | 384 | cfg.setGroup("PlayList"); |
385 | int noOfFiles = 0; | 385 | int noOfFiles = 0; |
386 | d->selectedFiles->first(); | 386 | d->selectedFiles->first(); |
387 | do { | 387 | do { |
388 | const DocLnk *lnk = d->selectedFiles->current(); | 388 | const DocLnk *lnk = d->selectedFiles->current(); |
389 | if ( lnk ) { | 389 | if ( lnk ) { |
390 | QString entryName; | 390 | QString entryName; |
391 | entryName.sprintf( "File%i", noOfFiles + 1 ); | 391 | entryName.sprintf( "File%i", noOfFiles + 1 ); |
392 | // qDebug(entryName); | 392 | // qDebug(entryName); |
393 | cfg.writeEntry( entryName, lnk->linkFile() ); | 393 | cfg.writeEntry( entryName, lnk->linkFile() ); |
394 | // if this link does exist, add it so we have the file | 394 | // if this link does exist, add it so we have the file |
395 | // next time... | 395 | // next time... |
396 | if ( !QFile::exists( lnk->linkFile() ) ) { | 396 | if ( !QFile::exists( lnk->linkFile() ) ) { |
397 | // the way writing lnks doesn't really check for out | 397 | // the way writing lnks doesn't really check for out |
398 | // of disk space, but check it anyway. | 398 | // of disk space, but check it anyway. |
399 | // if ( !lnk->writeLink() ) { | 399 | // if ( !lnk->writeLink() ) { |
400 | // QMessageBox::critical( 0, tr("Out of space"), | 400 | // QMessageBox::critical( 0, tr("Out of space"), |
401 | // tr( "There was a problem saving " | 401 | // tr( "There was a problem saving " |
402 | // "the playlist.\n" | 402 | // "the playlist.\n" |
403 | // "Your playlist " | 403 | // "Your playlist " |
404 | // "may be missing some entries\n" | 404 | // "may be missing some entries\n" |
405 | // "the next time you start it." ) | 405 | // "the next time you start it." ) |
406 | // ); | 406 | // ); |
407 | // } | 407 | // } |
408 | 408 | ||
409 | } | 409 | } |
410 | noOfFiles++; | 410 | noOfFiles++; |
411 | } | 411 | } |
412 | } | 412 | } |
413 | while ( d->selectedFiles->next() ); | 413 | while ( d->selectedFiles->next() ); |
414 | cfg.writeEntry("NumberOfFiles", noOfFiles ); | 414 | cfg.writeEntry("NumberOfFiles", noOfFiles ); |
415 | } | 415 | } |
416 | 416 | ||
417 | 417 | ||
418 | void PlayListWidget::addToSelection( const DocLnk& lnk ) { | 418 | void PlayListWidget::addToSelection( const DocLnk& lnk ) { |
419 | d->setDocumentUsed = false; | 419 | d->setDocumentUsed = false; |
420 | if ( mediaPlayerState->playlist() ) { | 420 | if ( mediaPlayerState->playlist() ) { |
421 | if(QFileInfo(lnk.file()).exists() || lnk.file().left(4) == "http" ) | 421 | if(QFileInfo(lnk.file()).exists() || lnk.file().left(4) == "http" ) |
422 | d->selectedFiles->addToSelection( lnk ); | 422 | d->selectedFiles->addToSelection( lnk ); |
423 | } | 423 | } |
424 | else | 424 | else |
425 | mediaPlayerState->setPlaying( true); | 425 | mediaPlayerState->setPlaying( true); |
426 | 426 | ||
@@ -847,193 +847,193 @@ void PlayListWidget::btnPlay(bool b) { | |||
847 | break; | 847 | break; |
848 | }; | 848 | }; |
849 | 849 | ||
850 | } | 850 | } |
851 | 851 | ||
852 | void PlayListWidget::deletePlaylist() { | 852 | void PlayListWidget::deletePlaylist() { |
853 | switch( QMessageBox::information( this, (tr("Remove Playlist?")), | 853 | switch( QMessageBox::information( this, (tr("Remove Playlist?")), |
854 | (tr("You really want to delete\nthis playlist?")), | 854 | (tr("You really want to delete\nthis playlist?")), |
855 | (tr("Yes")), (tr("No")), 0 )){ | 855 | (tr("Yes")), (tr("No")), 0 )){ |
856 | case 0: // Yes clicked, | 856 | case 0: // Yes clicked, |
857 | QFile().remove(playLists->selectedDocument().file()); | 857 | QFile().remove(playLists->selectedDocument().file()); |
858 | QFile().remove(playLists->selectedDocument().linkFile()); | 858 | QFile().remove(playLists->selectedDocument().linkFile()); |
859 | playLists->reread(); | 859 | playLists->reread(); |
860 | break; | 860 | break; |
861 | case 1: // Cancel | 861 | case 1: // Cancel |
862 | break; | 862 | break; |
863 | }; | 863 | }; |
864 | } | 864 | } |
865 | 865 | ||
866 | void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint&, int ) | 866 | void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint&, int ) |
867 | { | 867 | { |
868 | switch (mouse) { | 868 | switch (mouse) { |
869 | case 1: | 869 | case 1: |
870 | break; | 870 | break; |
871 | case 2:{ | 871 | case 2:{ |
872 | 872 | ||
873 | QPopupMenu m; | 873 | QPopupMenu m; |
874 | m.insertItem( tr( "Play" ), this, SLOT( playSelected() )); | 874 | m.insertItem( tr( "Play" ), this, SLOT( playSelected() )); |
875 | m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() )); | 875 | m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() )); |
876 | m.insertSeparator(); | 876 | m.insertSeparator(); |
877 | if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() ) | 877 | if( QFile(QPEApplication::qpeDir()+"lib/libopie.so").exists() ) |
878 | m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); | 878 | m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); |
879 | 879 | ||
880 | m.exec( QCursor::pos() ); | 880 | m.exec( QCursor::pos() ); |
881 | } | 881 | } |
882 | break; | 882 | break; |
883 | }; | 883 | }; |
884 | } | 884 | } |
885 | 885 | ||
886 | void PlayListWidget::playSelected() | 886 | void PlayListWidget::playSelected() |
887 | { | 887 | { |
888 | btnPlay( true); | 888 | btnPlay( true); |
889 | // d->selectedFiles->unSelect(); | 889 | // d->selectedFiles->unSelect(); |
890 | } | 890 | } |
891 | 891 | ||
892 | void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint&, int) | 892 | void PlayListWidget::playlistViewPressed( int mouse, QListViewItem *, const QPoint&, int) |
893 | { | 893 | { |
894 | switch (mouse) { | 894 | switch (mouse) { |
895 | case 1: | 895 | case 1: |
896 | 896 | ||
897 | break; | 897 | break; |
898 | case 2:{ | 898 | case 2:{ |
899 | QPopupMenu m; | 899 | QPopupMenu m; |
900 | m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() )); | 900 | m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() )); |
901 | m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() )); | 901 | m.insertItem( tr( "Remove" ), this, SLOT( removeSelected() )); |
902 | // m.insertSeparator(); | 902 | // m.insertSeparator(); |
903 | // m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); | 903 | // m.insertItem( tr( "Properties" ), this, SLOT( listDelete() )); |
904 | m.exec( QCursor::pos() ); | 904 | m.exec( QCursor::pos() ); |
905 | } | 905 | } |
906 | break; | 906 | break; |
907 | }; | 907 | }; |
908 | 908 | ||
909 | } | 909 | } |
910 | 910 | ||
911 | void PlayListWidget::listDelete() { | 911 | void PlayListWidget::listDelete() { |
912 | Config cfg( "OpiePlayer" ); | 912 | Config cfg( "OpiePlayer" ); |
913 | cfg.setGroup("PlayList"); | 913 | cfg.setGroup("PlayList"); |
914 | currentPlayList = cfg.readEntry("CurrentPlaylist",""); | 914 | currentPlayList = cfg.readEntry("CurrentPlaylist",""); |
915 | QString file; | 915 | QString file; |
916 | // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); | 916 | // int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); |
917 | switch ( tabWidget->currentPageIndex()) { | 917 | switch ( tabWidget->currentPageIndex()) { |
918 | case 0: | 918 | case 0: |
919 | break; | 919 | break; |
920 | case 1: | 920 | case 1: |
921 | { | 921 | { |
922 | file = audioView->currentItem()->text(0); | 922 | file = audioView->currentItem()->text(0); |
923 | QListIterator<DocLnk> Pdit( files.children() ); | 923 | QListIterator<DocLnk> Pdit( files.children() ); |
924 | for ( ; Pdit.current(); ++Pdit ) { | 924 | for ( ; Pdit.current(); ++Pdit ) { |
925 | if( Pdit.current()->name() == file) { | 925 | if( Pdit.current()->name() == file) { |
926 | LnkProperties prop( Pdit.current() ); | 926 | LnkProperties prop( Pdit.current() ); |
927 | QPEApplication::execDialog( &prop ); | 927 | QPEApplication::execDialog( &prop ); |
928 | } | 928 | } |
929 | } | 929 | } |
930 | populateAudioView(); | 930 | populateAudioView(); |
931 | } | 931 | } |
932 | break; | 932 | break; |
933 | case 2: | 933 | case 2: |
934 | { | 934 | { |
935 | // file = videoView->selectedItem()->text(0); | 935 | // file = videoView->selectedItem()->text(0); |
936 | // for ( int i = 0; i < noOfFiles; i++ ) { | 936 | // for ( int i = 0; i < noOfFiles; i++ ) { |
937 | // QString entryName; | 937 | // QString entryName; |
938 | // entryName.sprintf( "File%i", i + 1 ); | 938 | // entryName.sprintf( "File%i", i + 1 ); |
939 | // QString linkFile = cfg.readEntry( entryName ); | 939 | // QString linkFile = cfg.readEntry( entryName ); |
940 | // AppLnk lnk( AppLnk(linkFile)); | 940 | // AppLnk lnk( AppLnk(linkFile)); |
941 | // if( lnk.name() == file ) { | 941 | // if( lnk.name() == file ) { |
942 | // LnkProperties prop( &lnk); | 942 | // LnkProperties prop( &lnk); |
943 | // // connect(&prop, SIGNAL(select(const AppLnk *)), this, SLOT(externalSelected(const AppLnk *))); | 943 | // // connect(&prop, SIGNAL(select(const AppLnk*)), this, SLOT(externalSelected(const AppLnk*))); |
944 | // prop.showMaximized(); | 944 | // prop.showMaximized(); |
945 | // prop.exec(); | 945 | // prop.exec(); |
946 | // } | 946 | // } |
947 | // } | 947 | // } |
948 | } | 948 | } |
949 | break; | 949 | break; |
950 | }; | 950 | }; |
951 | } | 951 | } |
952 | 952 | ||
953 | void PlayListWidget::scanForAudio() { | 953 | void PlayListWidget::scanForAudio() { |
954 | // qDebug("scan for audio"); | 954 | // qDebug("scan for audio"); |
955 | files.detachChildren(); | 955 | files.detachChildren(); |
956 | QListIterator<DocLnk> sdit( files.children() ); | 956 | QListIterator<DocLnk> sdit( files.children() ); |
957 | for ( ; sdit.current(); ++sdit ) { | 957 | for ( ; sdit.current(); ++sdit ) { |
958 | delete sdit.current(); | 958 | delete sdit.current(); |
959 | } | 959 | } |
960 | Global::findDocuments( &files, audioMimes); | 960 | Global::findDocuments( &files, audioMimes); |
961 | audioScan = true; | 961 | audioScan = true; |
962 | } | 962 | } |
963 | void PlayListWidget::scanForVideo() { | 963 | void PlayListWidget::scanForVideo() { |
964 | // qDebug("scan for video"); | 964 | // qDebug("scan for video"); |
965 | vFiles.detachChildren(); | 965 | vFiles.detachChildren(); |
966 | QListIterator<DocLnk> sdit( vFiles.children() ); | 966 | QListIterator<DocLnk> sdit( vFiles.children() ); |
967 | for ( ; sdit.current(); ++sdit ) { | 967 | for ( ; sdit.current(); ++sdit ) { |
968 | delete sdit.current(); | 968 | delete sdit.current(); |
969 | } | 969 | } |
970 | Global::findDocuments(&vFiles, "video/*"); | 970 | Global::findDocuments(&vFiles, "video/*"); |
971 | videoScan = true; | 971 | videoScan = true; |
972 | } | 972 | } |
973 | 973 | ||
974 | void PlayListWidget::populateAudioView() { | 974 | void PlayListWidget::populateAudioView() { |
975 | 975 | ||
976 | audioView->clear(); | 976 | audioView->clear(); |
977 | StorageInfo storageInfo; | 977 | StorageInfo storageInfo; |
978 | const QList<FileSystem> &fs = storageInfo.fileSystems(); | 978 | const QList<FileSystem> &fs = storageInfo.fileSystems(); |
979 | if(!audioScan) scanForAudio(); | 979 | if(!audioScan) scanForAudio(); |
980 | 980 | ||
981 | QListIterator<DocLnk> dit( files.children() ); | 981 | QListIterator<DocLnk> dit( files.children() ); |
982 | QListIterator<FileSystem> it ( fs ); | 982 | QListIterator<FileSystem> it ( fs ); |
983 | 983 | ||
984 | QString storage; | 984 | QString storage; |
985 | for ( ; dit.current(); ++dit ) { | 985 | for ( ; dit.current(); ++dit ) { |
986 | for( ; it.current(); ++it ){ | 986 | for( ; it.current(); ++it ){ |
987 | const QString name = (*it)->name(); | 987 | const QString name = (*it)->name(); |
988 | const QString path = (*it)->path(); | 988 | const QString path = (*it)->path(); |
989 | if(dit.current()->file().find(path) != -1 ) storage=name; | 989 | if(dit.current()->file().find(path) != -1 ) storage=name; |
990 | } | 990 | } |
991 | 991 | ||
992 | QListViewItem * newItem; | 992 | QListViewItem * newItem; |
993 | if ( QFile( dit.current()->file()).exists() || dit.current()->file().left(4) == "http" ) { | 993 | if ( QFile( dit.current()->file()).exists() || dit.current()->file().left(4) == "http" ) { |
994 | long size; | 994 | long size; |
995 | if( dit.current()->file().left(4) == "http" ) | 995 | if( dit.current()->file().left(4) == "http" ) |
996 | size=0; | 996 | size=0; |
997 | else | 997 | else |
998 | size = QFile( dit.current()->file() ).size(); | 998 | size = QFile( dit.current()->file() ).size(); |
999 | // qDebug(dit.current()->name()); | 999 | // qDebug(dit.current()->name()); |
1000 | newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), | 1000 | newItem= /*(void)*/ new QListViewItem( audioView, dit.current()->name(), |
1001 | QString::number(size ), storage, dit.current()->file()); | 1001 | QString::number(size ), storage, dit.current()->file()); |
1002 | newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" )); | 1002 | newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/musicfile" )); |
1003 | } | 1003 | } |
1004 | } | 1004 | } |
1005 | 1005 | ||
1006 | } | 1006 | } |
1007 | 1007 | ||
1008 | void PlayListWidget::populateVideoView() { | 1008 | void PlayListWidget::populateVideoView() { |
1009 | videoView->clear(); | 1009 | videoView->clear(); |
1010 | StorageInfo storageInfo; | 1010 | StorageInfo storageInfo; |
1011 | const QList<FileSystem> &fs = storageInfo.fileSystems(); | 1011 | const QList<FileSystem> &fs = storageInfo.fileSystems(); |
1012 | 1012 | ||
1013 | if(!videoScan ) scanForVideo(); | 1013 | if(!videoScan ) scanForVideo(); |
1014 | 1014 | ||
1015 | QListIterator<DocLnk> Vdit( vFiles.children() ); | 1015 | QListIterator<DocLnk> Vdit( vFiles.children() ); |
1016 | QListIterator<FileSystem> it ( fs ); | 1016 | QListIterator<FileSystem> it ( fs ); |
1017 | videoView->clear(); | 1017 | videoView->clear(); |
1018 | QString storage; | 1018 | QString storage; |
1019 | for ( ; Vdit.current(); ++Vdit ) { | 1019 | for ( ; Vdit.current(); ++Vdit ) { |
1020 | for( ; it.current(); ++it ){ | 1020 | for( ; it.current(); ++it ){ |
1021 | const QString name = (*it)->name(); | 1021 | const QString name = (*it)->name(); |
1022 | const QString path = (*it)->path(); | 1022 | const QString path = (*it)->path(); |
1023 | if( Vdit.current()->file().find(path) != -1 ) storage=name; | 1023 | if( Vdit.current()->file().find(path) != -1 ) storage=name; |
1024 | } | 1024 | } |
1025 | 1025 | ||
1026 | QListViewItem * newItem; | 1026 | QListViewItem * newItem; |
1027 | if ( QFile( Vdit.current()->file()).exists() ) { | 1027 | if ( QFile( Vdit.current()->file()).exists() ) { |
1028 | newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), | 1028 | newItem= /*(void)*/ new QListViewItem( videoView, Vdit.current()->name(), |
1029 | QString::number( QFile( Vdit.current()->file() ).size() ), | 1029 | QString::number( QFile( Vdit.current()->file() ).size() ), |
1030 | storage, Vdit.current()->file()); | 1030 | storage, Vdit.current()->file()); |
1031 | newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/videofile" )); | 1031 | newItem->setPixmap(0, Resource::loadPixmap( "opieplayer/videofile" )); |
1032 | } | 1032 | } |
1033 | } | 1033 | } |
1034 | } | 1034 | } |
1035 | 1035 | ||
1036 | void PlayListWidget::openFile() { | 1036 | void PlayListWidget::openFile() { |
1037 | QString filename, name; | 1037 | QString filename, name; |
1038 | InputDialog *fileDlg; | 1038 | InputDialog *fileDlg; |
1039 | fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); | 1039 | fileDlg = new InputDialog(this,tr("Open file or URL"),TRUE, 0); |
diff --git a/core/obex/obexhandler.cpp b/core/obex/obexhandler.cpp index 4034560..28f9b5b 100644 --- a/core/obex/obexhandler.cpp +++ b/core/obex/obexhandler.cpp | |||
@@ -1,67 +1,67 @@ | |||
1 | 1 | ||
2 | #include <qpe/qcopenvelope_qws.h> | 2 | #include <qpe/qcopenvelope_qws.h> |
3 | #include <qpe/qpeapplication.h> | 3 | #include <qpe/qpeapplication.h> |
4 | 4 | ||
5 | #include "obexsend.h" | 5 | #include "obexsend.h" |
6 | #include "receiver.h" | 6 | #include "receiver.h" |
7 | #include "obexhandler.h" | 7 | #include "obexhandler.h" |
8 | 8 | ||
9 | using namespace OpieObex; | 9 | using namespace OpieObex; |
10 | 10 | ||
11 | /* TRANSLATOR OpieObex::ObexHandler */ | 11 | /* TRANSLATOR OpieObex::ObexHandler */ |
12 | 12 | ||
13 | ObexHandler::ObexHandler() { | 13 | ObexHandler::ObexHandler() { |
14 | m_wasRec = false; | 14 | m_wasRec = false; |
15 | m_sender = 0l; | 15 | m_sender = 0l; |
16 | m_receiver = 0l; | 16 | m_receiver = 0l; |
17 | QCopChannel* chan = new QCopChannel("QPE/Obex"); | 17 | QCopChannel* chan = new QCopChannel("QPE/Obex"); |
18 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), | 18 | connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), |
19 | this, SLOT(irdaMessage(const QCString&, const QByteArray& ) ) ); | 19 | this, SLOT(irdaMessage(const QCString&,const QByteArray&) ) ); |
20 | } | 20 | } |
21 | ObexHandler::~ObexHandler() { | 21 | ObexHandler::~ObexHandler() { |
22 | delete m_sender; | 22 | delete m_sender; |
23 | delete m_receiver; | 23 | delete m_receiver; |
24 | } | 24 | } |
25 | void ObexHandler::doSend(const QString& str, const QString& desc) { | 25 | void ObexHandler::doSend(const QString& str, const QString& desc) { |
26 | delete m_sender; | 26 | delete m_sender; |
27 | m_sender = new SendWidget; | 27 | m_sender = new SendWidget; |
28 | m_sender->raise(); | 28 | m_sender->raise(); |
29 | QPEApplication::showWidget( m_sender ); | 29 | QPEApplication::showWidget( m_sender ); |
30 | connect(m_sender, SIGNAL(done() ), | 30 | connect(m_sender, SIGNAL(done() ), |
31 | this, SLOT(slotSent() ) ); | 31 | this, SLOT(slotSent() ) ); |
32 | m_sender->send( str, desc ); | 32 | m_sender->send( str, desc ); |
33 | } | 33 | } |
34 | void ObexHandler::doReceive(bool b) { | 34 | void ObexHandler::doReceive(bool b) { |
35 | if (m_receiver && b ) return; // we should enable receiver and it is on | 35 | if (m_receiver && b ) return; // we should enable receiver and it is on |
36 | else if (!m_receiver && !b ) return; // we should disbale receiver and it is off | 36 | else if (!m_receiver && !b ) return; // we should disbale receiver and it is off |
37 | else if (m_receiver && !b ) { | 37 | else if (m_receiver && !b ) { |
38 | delete m_receiver; | 38 | delete m_receiver; |
39 | m_receiver=0; | 39 | m_receiver=0; |
40 | }else if (!m_receiver && b ) { | 40 | }else if (!m_receiver && b ) { |
41 | m_receiver= new Receiver; | 41 | m_receiver= new Receiver; |
42 | } | 42 | } |
43 | } | 43 | } |
44 | void ObexHandler::slotSent() { | 44 | void ObexHandler::slotSent() { |
45 | QString file = m_sender->file(); | 45 | QString file = m_sender->file(); |
46 | delete m_sender; | 46 | delete m_sender; |
47 | m_sender = 0; | 47 | m_sender = 0; |
48 | QCopEnvelope e ("QPE/Obex", "done(QString)" ); | 48 | QCopEnvelope e ("QPE/Obex", "done(QString)" ); |
49 | e << file; | 49 | e << file; |
50 | doReceive(m_wasRec ); | 50 | doReceive(m_wasRec ); |
51 | m_wasRec = false; | 51 | m_wasRec = false; |
52 | } | 52 | } |
53 | void ObexHandler::irdaMessage( const QCString& msg, const QByteArray& data) { | 53 | void ObexHandler::irdaMessage( const QCString& msg, const QByteArray& data) { |
54 | QDataStream stream( data, IO_ReadOnly ); | 54 | QDataStream stream( data, IO_ReadOnly ); |
55 | if ( msg == "send(QString,QString,QString)" ) { | 55 | if ( msg == "send(QString,QString,QString)" ) { |
56 | QString name, desc; | 56 | QString name, desc; |
57 | stream >> desc; | 57 | stream >> desc; |
58 | stream >> name; | 58 | stream >> name; |
59 | m_wasRec = (m_receiver != 0 ); | 59 | m_wasRec = (m_receiver != 0 ); |
60 | doReceive( false ); | 60 | doReceive( false ); |
61 | doSend(name, desc); | 61 | doSend(name, desc); |
62 | }else if (msg == "receive(int)") { | 62 | }else if (msg == "receive(int)") { |
63 | int rec; | 63 | int rec; |
64 | stream >> rec; | 64 | stream >> rec; |
65 | doReceive(rec); | 65 | doReceive(rec); |
66 | } | 66 | } |
67 | } | 67 | } |
diff --git a/core/obex/obexsend.cpp b/core/obex/obexsend.cpp index 6b8d467..cd8d58e 100644 --- a/core/obex/obexsend.cpp +++ b/core/obex/obexsend.cpp | |||
@@ -1,158 +1,158 @@ | |||
1 | #include <qpushbutton.h> | 1 | #include <qpushbutton.h> |
2 | #include <qlabel.h> | 2 | #include <qlabel.h> |
3 | #include <qlayout.h> | 3 | #include <qlayout.h> |
4 | #include <qtimer.h> | 4 | #include <qtimer.h> |
5 | 5 | ||
6 | 6 | ||
7 | #include <qpe/qcopenvelope_qws.h> | 7 | #include <qpe/qcopenvelope_qws.h> |
8 | 8 | ||
9 | #include "obex.h" | 9 | #include "obex.h" |
10 | #include "obexsend.h" | 10 | #include "obexsend.h" |
11 | 11 | ||
12 | using namespace OpieObex; | 12 | using namespace OpieObex; |
13 | 13 | ||
14 | /* TRANSLATOR OpieObex::SendWidget */ | 14 | /* TRANSLATOR OpieObex::SendWidget */ |
15 | 15 | ||
16 | 16 | ||
17 | SendWidget::SendWidget( QWidget* parent, const char* name ) | 17 | SendWidget::SendWidget( QWidget* parent, const char* name ) |
18 | : QWidget( parent, name ) { | 18 | : QWidget( parent, name ) { |
19 | initUI(); | 19 | initUI(); |
20 | } | 20 | } |
21 | SendWidget::~SendWidget() { | 21 | SendWidget::~SendWidget() { |
22 | } | 22 | } |
23 | void SendWidget::initUI() { | 23 | void SendWidget::initUI() { |
24 | m_obex = new Obex(this, "obex"); | 24 | m_obex = new Obex(this, "obex"); |
25 | connect(m_obex, SIGNAL(error(int) ), | 25 | connect(m_obex, SIGNAL(error(int) ), |
26 | this, SLOT(slotIrError(int) ) ); | 26 | this, SLOT(slotIrError(int) ) ); |
27 | connect(m_obex, SIGNAL(sent(bool) ), | 27 | connect(m_obex, SIGNAL(sent(bool) ), |
28 | this, SLOT(slotIrSent(bool) ) ); | 28 | this, SLOT(slotIrSent(bool) ) ); |
29 | connect(m_obex, SIGNAL(currentTry(unsigned int ) ), | 29 | connect(m_obex, SIGNAL(currentTry(unsigned int) ), |
30 | this, SLOT(slotIrTry(unsigned int ) ) ); | 30 | this, SLOT(slotIrTry(unsigned int) ) ); |
31 | 31 | ||
32 | QCopChannel* chan = new QCopChannel("QPE/IrDaAppletBack", this ); | 32 | QCopChannel* chan = new QCopChannel("QPE/IrDaAppletBack", this ); |
33 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), | 33 | connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), |
34 | this, SLOT(dispatchIrda(const QCString&, const QByteArray& ) ) ); | 34 | this, SLOT(dispatchIrda(const QCString&,const QByteArray&) ) ); |
35 | 35 | ||
36 | chan = new QCopChannel("QPE/BluetoothBack", this ); | 36 | chan = new QCopChannel("QPE/BluetoothBack", this ); |
37 | connect(chan, SIGNAL(received(const QCString&, const QByteArray& ) ), | 37 | connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), |
38 | this, SLOT(dispatchBt(const QCString&, const QByteArray& ) ) ); | 38 | this, SLOT(dispatchBt(const QCString&,const QByteArray&) ) ); |
39 | 39 | ||
40 | QVBoxLayout* lay = new QVBoxLayout(this); | 40 | QVBoxLayout* lay = new QVBoxLayout(this); |
41 | 41 | ||
42 | QHBox* nameBox = new QHBox(this); | 42 | QHBox* nameBox = new QHBox(this); |
43 | QLabel* name = new QLabel(nameBox); | 43 | QLabel* name = new QLabel(nameBox); |
44 | name->setText( tr("<qt><h1>Sending:</h1></qt>") ); | 44 | name->setText( tr("<qt><h1>Sending:</h1></qt>") ); |
45 | name->setAlignment( AlignLeft | AlignTop ); | 45 | name->setAlignment( AlignLeft | AlignTop ); |
46 | m_lblFile = new QLabel(nameBox); | 46 | m_lblFile = new QLabel(nameBox); |
47 | lay->addWidget(nameBox, 0); | 47 | lay->addWidget(nameBox, 0); |
48 | 48 | ||
49 | QFrame* frame = new QFrame(this); | 49 | QFrame* frame = new QFrame(this); |
50 | frame->setFrameShape( QFrame::HLine ); | 50 | frame->setFrameShape( QFrame::HLine ); |
51 | frame->setFrameShadow( QFrame::Sunken ); | 51 | frame->setFrameShadow( QFrame::Sunken ); |
52 | lay->addWidget(frame, 10); | 52 | lay->addWidget(frame, 10); |
53 | 53 | ||
54 | QLabel* devices = new QLabel(this); | 54 | QLabel* devices = new QLabel(this); |
55 | devices->setText("<qt><b>Devices:</b></qt>"); | 55 | devices->setText("<qt><b>Devices:</b></qt>"); |
56 | devices->setAlignment( AlignLeft | AlignTop ); | 56 | devices->setAlignment( AlignLeft | AlignTop ); |
57 | lay->addWidget( devices,10 ); | 57 | lay->addWidget( devices,10 ); |
58 | 58 | ||
59 | m_devBox = new DeviceBox(this); | 59 | m_devBox = new DeviceBox(this); |
60 | lay->addWidget( m_devBox, 50 ); | 60 | lay->addWidget( m_devBox, 50 ); |
61 | connect(m_devBox, SIGNAL(selectedDevice(int, int ) ), | 61 | connect(m_devBox, SIGNAL(selectedDevice(int,int) ), |
62 | this, SLOT(slotSelectedDevice(int, int) ) ); | 62 | this, SLOT(slotSelectedDevice(int,int) ) ); |
63 | 63 | ||
64 | QPushButton *but = new QPushButton(this); | 64 | QPushButton *but = new QPushButton(this); |
65 | but->setText(tr("Done") ); | 65 | but->setText(tr("Done") ); |
66 | connect(but, SIGNAL(clicked() ), | 66 | connect(but, SIGNAL(clicked() ), |
67 | this, SLOT(slotDone() ) ); | 67 | this, SLOT(slotDone() ) ); |
68 | 68 | ||
69 | lay->addWidget( but ); | 69 | lay->addWidget( but ); |
70 | m_lay = lay; | 70 | m_lay = lay; |
71 | 71 | ||
72 | // QT does not like if you add items to an layout which already exits.... | 72 | // QT does not like if you add items to an layout which already exits.... |
73 | // and was layouted invalidate() does not help too | 73 | // and was layouted invalidate() does not help too |
74 | // so we use RichText.... | 74 | // so we use RichText.... |
75 | } | 75 | } |
76 | 76 | ||
77 | /* | 77 | /* |
78 | * in send we'll first set everything up | 78 | * in send we'll first set everything up |
79 | * and then wait for a list of devices. | 79 | * and then wait for a list of devices. |
80 | */ | 80 | */ |
81 | void SendWidget::send( const QString& file, const QString& desc ) { | 81 | void SendWidget::send( const QString& file, const QString& desc ) { |
82 | m_file = file; | 82 | m_file = file; |
83 | m_irDa.clear(); | 83 | m_irDa.clear(); |
84 | m_start = 0; | 84 | m_start = 0; |
85 | m_lblFile->setText(desc.isEmpty() ? file : desc ); | 85 | m_lblFile->setText(desc.isEmpty() ? file : desc ); |
86 | 86 | ||
87 | if ( !QCopChannel::isRegistered("QPE/IrDaApplet") ) { | 87 | if ( !QCopChannel::isRegistered("QPE/IrDaApplet") ) { |
88 | m_irDeSearch = m_devBox->addDevice( tr("IrDa is not enabled!"), DeviceBox::Error ); | 88 | m_irDeSearch = m_devBox->addDevice( tr("IrDa is not enabled!"), DeviceBox::Error ); |
89 | m_start++; | 89 | m_start++; |
90 | }else | 90 | }else |
91 | m_irDeSearch = m_devBox->addDevice( tr("Searching for IrDa Devices."), DeviceBox::Search ); | 91 | m_irDeSearch = m_devBox->addDevice( tr("Searching for IrDa Devices."), DeviceBox::Search ); |
92 | 92 | ||
93 | if ( !QCopChannel::isRegistered("QPE/Bluetooth") ) { | 93 | if ( !QCopChannel::isRegistered("QPE/Bluetooth") ) { |
94 | m_btDeSearch = m_devBox->addDevice( tr("Bluetooth is not available"), DeviceBox::Error ); | 94 | m_btDeSearch = m_devBox->addDevice( tr("Bluetooth is not available"), DeviceBox::Error ); |
95 | m_start++; | 95 | m_start++; |
96 | }else | 96 | }else |
97 | m_btDeSearch = m_devBox->addDevice( tr("Searching for bluetooth Devices."), DeviceBox::Search ); | 97 | m_btDeSearch = m_devBox->addDevice( tr("Searching for bluetooth Devices."), DeviceBox::Search ); |
98 | 98 | ||
99 | if (m_start != 2 ) { | 99 | if (m_start != 2 ) { |
100 | QCopEnvelope e0("QPE/IrDaApplet", "enableIrda()"); | 100 | QCopEnvelope e0("QPE/IrDaApplet", "enableIrda()"); |
101 | QCopEnvelope e1("QPE/Bluetooth", "enableBluetooth()"); | 101 | QCopEnvelope e1("QPE/Bluetooth", "enableBluetooth()"); |
102 | QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); | 102 | QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); |
103 | QCopEnvelope e3("QPE/Bluetooth", "listDevices()"); | 103 | QCopEnvelope e3("QPE/Bluetooth", "listDevices()"); |
104 | } | 104 | } |
105 | } | 105 | } |
106 | void SendWidget::slotIrDaDevices( const QStringList& list) { | 106 | void SendWidget::slotIrDaDevices( const QStringList& list) { |
107 | qWarning("slot it irda devices "); | 107 | qWarning("slot it irda devices "); |
108 | for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) { | 108 | for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) { |
109 | int id = m_devBox->addDevice( (*it), DeviceBox::IrDa, tr("Scheduling for beam.") ); | 109 | int id = m_devBox->addDevice( (*it), DeviceBox::IrDa, tr("Scheduling for beam.") ); |
110 | m_irDa.insert( id, (*it) ); | 110 | m_irDa.insert( id, (*it) ); |
111 | } | 111 | } |
112 | m_devBox->removeDevice( m_irDeSearch ); | 112 | m_devBox->removeDevice( m_irDeSearch ); |
113 | m_irDaIt = m_irDa.begin(); | 113 | m_irDaIt = m_irDa.begin(); |
114 | 114 | ||
115 | slotStartIrda(); | 115 | slotStartIrda(); |
116 | } | 116 | } |
117 | 117 | ||
118 | void SendWidget::slotBTDevices( const QMap<QString, QString>& str ) { | 118 | void SendWidget::slotBTDevices( const QMap<QString, QString>& str ) { |
119 | for(QMap<QString, QString>::ConstIterator it = str.begin(); it != str.end(); ++it ) { | 119 | for(QMap<QString, QString>::ConstIterator it = str.begin(); it != str.end(); ++it ) { |
120 | int id = m_devBox->addDevice( it.key(), DeviceBox::BT, tr("Click to beam") ); | 120 | int id = m_devBox->addDevice( it.key(), DeviceBox::BT, tr("Click to beam") ); |
121 | m_bt.insert( id, Pair( it.key(), it.data() ) ); | 121 | m_bt.insert( id, Pair( it.key(), it.data() ) ); |
122 | } | 122 | } |
123 | m_devBox->removeDevice( m_btDeSearch ); | 123 | m_devBox->removeDevice( m_btDeSearch ); |
124 | } | 124 | } |
125 | void SendWidget::slotSelectedDevice( int name, int dev ) { | 125 | void SendWidget::slotSelectedDevice( int name, int dev ) { |
126 | qWarning("Start beam? %d %d", name, dev ); | 126 | qWarning("Start beam? %d %d", name, dev ); |
127 | if ( name == m_irDeSearch ) { | 127 | if ( name == m_irDeSearch ) { |
128 | for (QMap<int, QString>::Iterator it= m_irDa.begin(); it != m_irDa.end(); ++it ) | 128 | for (QMap<int, QString>::Iterator it= m_irDa.begin(); it != m_irDa.end(); ++it ) |
129 | m_devBox->removeDevice( it.key() ); | 129 | m_devBox->removeDevice( it.key() ); |
130 | 130 | ||
131 | QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); | 131 | QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); |
132 | } | 132 | } |
133 | } | 133 | } |
134 | void SendWidget::dispatchIrda( const QCString& str, const QByteArray& ar ) { | 134 | void SendWidget::dispatchIrda( const QCString& str, const QByteArray& ar ) { |
135 | qWarning("dispatch irda %s", str.data() ); | 135 | qWarning("dispatch irda %s", str.data() ); |
136 | if ( str == "devices(QStringList)" ) { | 136 | if ( str == "devices(QStringList)" ) { |
137 | QDataStream stream( ar, IO_ReadOnly ); | 137 | QDataStream stream( ar, IO_ReadOnly ); |
138 | QStringList list; | 138 | QStringList list; |
139 | stream >> list; | 139 | stream >> list; |
140 | slotIrDaDevices( list ); | 140 | slotIrDaDevices( list ); |
141 | } | 141 | } |
142 | } | 142 | } |
143 | void SendWidget::dispatchBt( const QCString&, const QByteArray& ) { | 143 | void SendWidget::dispatchBt( const QCString&, const QByteArray& ) { |
144 | 144 | ||
145 | } | 145 | } |
146 | void SendWidget::slotIrError( int ) { | 146 | void SendWidget::slotIrError( int ) { |
147 | 147 | ||
148 | } | 148 | } |
149 | void SendWidget::slotIrSent( bool b) { | 149 | void SendWidget::slotIrSent( bool b) { |
150 | qWarning("irda sent!!"); | 150 | qWarning("irda sent!!"); |
151 | QString text = b ? tr("Sent") : tr("Failure"); | 151 | QString text = b ? tr("Sent") : tr("Failure"); |
152 | m_devBox->setStatus( m_irDaIt.key(), text ); | 152 | m_devBox->setStatus( m_irDaIt.key(), text ); |
153 | ++m_irDaIt; | 153 | ++m_irDaIt; |
154 | slotStartIrda(); | 154 | slotStartIrda(); |
155 | } | 155 | } |
156 | void SendWidget::slotIrTry(unsigned int trI) { | 156 | void SendWidget::slotIrTry(unsigned int trI) { |
157 | m_devBox->setStatus( m_irDaIt.key(), tr("Try %1").arg( QString::number( trI ) ) ); | 157 | m_devBox->setStatus( m_irDaIt.key(), tr("Try %1").arg( QString::number( trI ) ) ); |
158 | } | 158 | } |
diff --git a/core/obex/receiver.cpp b/core/obex/receiver.cpp index 7d9f7ec..ee2668b 100644 --- a/core/obex/receiver.cpp +++ b/core/obex/receiver.cpp | |||
@@ -1,124 +1,124 @@ | |||
1 | #include <sys/types.h> | 1 | #include <sys/types.h> |
2 | #include <sys/stat.h> | 2 | #include <sys/stat.h> |
3 | #include <sys/mman.h> | 3 | #include <sys/mman.h> |
4 | #include <stdlib.h> // int system | 4 | #include <stdlib.h> // int system |
5 | #include <unistd.h> | 5 | #include <unistd.h> |
6 | 6 | ||
7 | #include <fcntl.h> | 7 | #include <fcntl.h> |
8 | 8 | ||
9 | #include <qfileinfo.h> | 9 | #include <qfileinfo.h> |
10 | #include <qlabel.h> | 10 | #include <qlabel.h> |
11 | #include <qtextview.h> | 11 | #include <qtextview.h> |
12 | #include <qpushbutton.h> | 12 | #include <qpushbutton.h> |
13 | 13 | ||
14 | #include <qpe/applnk.h> | 14 | #include <qpe/applnk.h> |
15 | #include <qpe/qpeapplication.h> | 15 | #include <qpe/qpeapplication.h> |
16 | #include <qpe/qcopenvelope_qws.h> | 16 | #include <qpe/qcopenvelope_qws.h> |
17 | 17 | ||
18 | #include "obex.h" | 18 | #include "obex.h" |
19 | #include "receiver.h" | 19 | #include "receiver.h" |
20 | 20 | ||
21 | using namespace OpieObex; | 21 | using namespace OpieObex; |
22 | 22 | ||
23 | /* TRANSLATOR OpieObex::Receiver */ | 23 | /* TRANSLATOR OpieObex::Receiver */ |
24 | 24 | ||
25 | Receiver::Receiver() { | 25 | Receiver::Receiver() { |
26 | m_obex = new Obex(this, "Receiver"); | 26 | m_obex = new Obex(this, "Receiver"); |
27 | connect(m_obex, SIGNAL(receivedFile(const QString& ) ), | 27 | connect(m_obex, SIGNAL(receivedFile(const QString&) ), |
28 | this, SLOT(slotReceived(const QString& ) ) ); | 28 | this, SLOT(slotReceived(const QString&) ) ); |
29 | m_obex->receive(); | 29 | m_obex->receive(); |
30 | } | 30 | } |
31 | Receiver::~Receiver() { | 31 | Receiver::~Receiver() { |
32 | m_obex->setReceiveEnabled( false ); | 32 | m_obex->setReceiveEnabled( false ); |
33 | delete m_obex; | 33 | delete m_obex; |
34 | } | 34 | } |
35 | void Receiver::slotReceived( const QString& _file ) { | 35 | void Receiver::slotReceived( const QString& _file ) { |
36 | QString file = _file; | 36 | QString file = _file; |
37 | int check = checkFile(file); | 37 | int check = checkFile(file); |
38 | if ( check == AddressBook ) | 38 | if ( check == AddressBook ) |
39 | handleAddr( file ); | 39 | handleAddr( file ); |
40 | else if ( check == Datebook ) | 40 | else if ( check == Datebook ) |
41 | handleDateTodo( file ); | 41 | handleDateTodo( file ); |
42 | else | 42 | else |
43 | handleOther( file ); | 43 | handleOther( file ); |
44 | } | 44 | } |
45 | void Receiver::handleAddr( const QString& str ) { | 45 | void Receiver::handleAddr( const QString& str ) { |
46 | QCopEnvelope e("QPE/Application/addressbook", "setDocument(QString)" ); | 46 | QCopEnvelope e("QPE/Application/addressbook", "setDocument(QString)" ); |
47 | e << str; | 47 | e << str; |
48 | } | 48 | } |
49 | /* we can not say for sure if it's a VEevent ot VTodo */ | 49 | /* we can not say for sure if it's a VEevent ot VTodo */ |
50 | void Receiver::handleDateTodo( const QString& str ) { | 50 | void Receiver::handleDateTodo( const QString& str ) { |
51 | QCopEnvelope e0("QPE/Application/todolist", "setDocument(QString)"); | 51 | QCopEnvelope e0("QPE/Application/todolist", "setDocument(QString)"); |
52 | e0 << str; | 52 | e0 << str; |
53 | QCopEnvelope e1("QPE/Application/datebook", "setDocument(QString)" ); | 53 | QCopEnvelope e1("QPE/Application/datebook", "setDocument(QString)" ); |
54 | e1 << str; | 54 | e1 << str; |
55 | } | 55 | } |
56 | /* | 56 | /* |
57 | * Handle other asks if it should accept the | 57 | * Handle other asks if it should accept the |
58 | * beamed object and creates a DocLnk | 58 | * beamed object and creates a DocLnk |
59 | */ | 59 | */ |
60 | void Receiver::handleOther( const QString& other ) { | 60 | void Receiver::handleOther( const QString& other ) { |
61 | OtherHandler* hand = new OtherHandler(); | 61 | OtherHandler* hand = new OtherHandler(); |
62 | hand->handle( other ); | 62 | hand->handle( other ); |
63 | } | 63 | } |
64 | void Receiver::tidyUp( QString& _file, const QString& ending) { | 64 | void Receiver::tidyUp( QString& _file, const QString& ending) { |
65 | /* libversit fails on BASE64 encoding we try to sed it away */ | 65 | /* libversit fails on BASE64 encoding we try to sed it away */ |
66 | QString file = _file; | 66 | QString file = _file; |
67 | char foo[24]; // big enough | 67 | char foo[24]; // big enough |
68 | (void)::strcpy(foo, "/tmp/opie-XXXXXX"); | 68 | (void)::strcpy(foo, "/tmp/opie-XXXXXX"); |
69 | 69 | ||
70 | int fd = ::mkstemp(foo); | 70 | int fd = ::mkstemp(foo); |
71 | 71 | ||
72 | if ( fd == -1 ) | 72 | if ( fd == -1 ) |
73 | return; | 73 | return; |
74 | 74 | ||
75 | (void)::strncat( foo, ending.latin1(), 4 ); | 75 | (void)::strncat( foo, ending.latin1(), 4 ); |
76 | _file = QString::fromLatin1( foo ); | 76 | _file = QString::fromLatin1( foo ); |
77 | QString cmd = QString("sed -e \"s/^\\(X-MICROSOFT-BODYINK\\)\\;/\\1:/;\" < %2 > %2 ").arg( Global::shellQuote(file)).arg( Global::shellQuote(_file) ); | 77 | QString cmd = QString("sed -e \"s/^\\(X-MICROSOFT-BODYINK\\)\\;/\\1:/;\" < %2 > %2 ").arg( Global::shellQuote(file)).arg( Global::shellQuote(_file) ); |
78 | qWarning("Executing: %s", cmd.latin1() ); | 78 | qWarning("Executing: %s", cmd.latin1() ); |
79 | (void)::system( cmd.latin1() ); | 79 | (void)::system( cmd.latin1() ); |
80 | 80 | ||
81 | cmd = QString("rm %1").arg( Global::shellQuote(file) ); | 81 | cmd = QString("rm %1").arg( Global::shellQuote(file) ); |
82 | (void)::system( cmd.latin1() ); | 82 | (void)::system( cmd.latin1() ); |
83 | } | 83 | } |
84 | int Receiver::checkFile( QString& file ) { | 84 | int Receiver::checkFile( QString& file ) { |
85 | qWarning("check file!! %s", file.latin1() ); | 85 | qWarning("check file!! %s", file.latin1() ); |
86 | int ret; | 86 | int ret; |
87 | QString ending; | 87 | QString ending; |
88 | 88 | ||
89 | if (file.right(4) == ".vcs" ) { | 89 | if (file.right(4) == ".vcs" ) { |
90 | ret = Datebook; | 90 | ret = Datebook; |
91 | ending = QString::fromLatin1(".vcs"); | 91 | ending = QString::fromLatin1(".vcs"); |
92 | }else if ( file.right(4) == ".vcf") { | 92 | }else if ( file.right(4) == ".vcf") { |
93 | ret = AddressBook; | 93 | ret = AddressBook; |
94 | ending = QString::fromLatin1(".vcf"); | 94 | ending = QString::fromLatin1(".vcf"); |
95 | }else | 95 | }else |
96 | ret = Other; | 96 | ret = Other; |
97 | 97 | ||
98 | 98 | ||
99 | if (ending.isEmpty() ) | 99 | if (ending.isEmpty() ) |
100 | return ret; | 100 | return ret; |
101 | 101 | ||
102 | /** | 102 | /** |
103 | * currently the parser is broken in regard of BASE64 encoding | 103 | * currently the parser is broken in regard of BASE64 encoding |
104 | * and M$ likes to send that. So we will executed a small | 104 | * and M$ likes to send that. So we will executed a small |
105 | * tidy up system sed script | 105 | * tidy up system sed script |
106 | * At this point we can also remove umlaute from the filename | 106 | * At this point we can also remove umlaute from the filename |
107 | */ | 107 | */ |
108 | tidyUp( file, ending ); | 108 | tidyUp( file, ending ); |
109 | 109 | ||
110 | qWarning("check it now %d", ret ); | 110 | qWarning("check it now %d", ret ); |
111 | return ret; | 111 | return ret; |
112 | } | 112 | } |
113 | 113 | ||
114 | /* TRANSLATOR OpieObex::OtherHandler */ | 114 | /* TRANSLATOR OpieObex::OtherHandler */ |
115 | 115 | ||
116 | OtherHandler::OtherHandler() | 116 | OtherHandler::OtherHandler() |
117 | : QVBox() | 117 | : QVBox() |
118 | { | 118 | { |
119 | QHBox* box = new QHBox(this); | 119 | QHBox* box = new QHBox(this); |
120 | QLabel* lbl = new QLabel(box); | 120 | QLabel* lbl = new QLabel(box); |
121 | lbl->setText(tr("<qt><b>Received:</b></qt>")); | 121 | lbl->setText(tr("<qt><b>Received:</b></qt>")); |
122 | m_na = new QLabel(box); | 122 | m_na = new QLabel(box); |
123 | 123 | ||
124 | QFrame* frame = new QFrame(this); | 124 | QFrame* frame = new QFrame(this); |
diff --git a/core/opie-login/loginwindowimpl.cpp b/core/opie-login/loginwindowimpl.cpp index 3037ba3..e1b9360 100644 --- a/core/opie-login/loginwindowimpl.cpp +++ b/core/opie-login/loginwindowimpl.cpp | |||
@@ -1,176 +1,176 @@ | |||
1 | /* | 1 | /* |
2 | =. This file is part of the OPIE Project | 2 | =. This file is part of the OPIE Project |
3 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> | 3 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> |
4 | .>+-= | 4 | .>+-= |
5 | _;:, .> :=|. This file is free software; you can | 5 | _;:, .> :=|. This file is free software; you can |
6 | .> <`_, > . <= redistribute it and/or modify it under | 6 | .> <`_, > . <= redistribute it and/or modify it under |
7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This file is distributed in the hope that | 12 | .i_,=:_. -<s. This file is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
17 | ..}^=.= = ; Public License for more details. | 17 | ..}^=.= = ; Public License for more details. |
18 | ++= -. .` .: | 18 | ++= -. .` .: |
19 | : = ...= . :.=- You should have received a copy of the GNU | 19 | : = ...= . :.=- You should have received a copy of the GNU |
20 | -. .:....=;==+<; General Public License along with this file; | 20 | -. .:....=;==+<; General Public License along with this file; |
21 | -_. . . )=. = see the file COPYING. If not, write to the | 21 | -_. . . )=. = see the file COPYING. If not, write to the |
22 | -- :-=` Free Software Foundation, Inc., | 22 | -- :-=` Free Software Foundation, Inc., |
23 | 59 Temple Place - Suite 330, | 23 | 59 Temple Place - Suite 330, |
24 | Boston, MA 02111-1307, USA. | 24 | Boston, MA 02111-1307, USA. |
25 | 25 | ||
26 | */ | 26 | */ |
27 | #include <qpe/version.h> | 27 | #include <qpe/version.h> |
28 | #include <qpushbutton.h> | 28 | #include <qpushbutton.h> |
29 | #include <qlayout.h> | 29 | #include <qlayout.h> |
30 | #include <qlineedit.h> | 30 | #include <qlineedit.h> |
31 | #include <qtimer.h> | 31 | #include <qtimer.h> |
32 | #include <qcombobox.h> | 32 | #include <qcombobox.h> |
33 | #include <qlabel.h> | 33 | #include <qlabel.h> |
34 | #include <qpopupmenu.h> | 34 | #include <qpopupmenu.h> |
35 | #include <qmessagebox.h> | 35 | #include <qmessagebox.h> |
36 | #if QT_VERSION < 300 | 36 | #if QT_VERSION < 300 |
37 | #include <qgfx_qws.h> | 37 | #include <qgfx_qws.h> |
38 | #endif | 38 | #endif |
39 | #include <qwindowsystem_qws.h> | 39 | #include <qwindowsystem_qws.h> |
40 | 40 | ||
41 | #include <qpe/resource.h> | 41 | #include <qpe/resource.h> |
42 | #include <qpe/qcopenvelope_qws.h> | 42 | #include <qpe/qcopenvelope_qws.h> |
43 | #include <qpe/config.h> | 43 | #include <qpe/config.h> |
44 | 44 | ||
45 | #include <opie/odevice.h> | 45 | #include <opie/odevice.h> |
46 | 46 | ||
47 | #include <stdio.h> | 47 | #include <stdio.h> |
48 | #include <stdlib.h> | 48 | #include <stdlib.h> |
49 | 49 | ||
50 | #include "loginwindowimpl.h" | 50 | #include "loginwindowimpl.h" |
51 | #include "loginapplication.h" | 51 | #include "loginapplication.h" |
52 | #include "inputmethods.h" | 52 | #include "inputmethods.h" |
53 | 53 | ||
54 | using namespace Opie; | 54 | using namespace Opie; |
55 | 55 | ||
56 | 56 | ||
57 | LoginWindowImpl::LoginWindowImpl ( ) : LoginWindow ( 0, "LOGIN-WINDOW", WStyle_Customize | WStyle_NoBorder | WDestructiveClose ) | 57 | LoginWindowImpl::LoginWindowImpl ( ) : LoginWindow ( 0, "LOGIN-WINDOW", WStyle_Customize | WStyle_NoBorder | WDestructiveClose ) |
58 | { | 58 | { |
59 | QPopupMenu *pop = new QPopupMenu ( this ); | 59 | QPopupMenu *pop = new QPopupMenu ( this ); |
60 | pop-> insertItem ( tr( "Restart" ), this, SLOT( restart ( ))); | 60 | pop-> insertItem ( tr( "Restart" ), this, SLOT( restart())); |
61 | pop-> insertItem ( tr( "Quit" ), this, SLOT( quit ( ))); | 61 | pop-> insertItem ( tr( "Quit" ), this, SLOT( quit())); |
62 | m_menu-> setPopup ( pop ); | 62 | m_menu-> setPopup ( pop ); |
63 | 63 | ||
64 | QCopChannel *channel = new QCopChannel ( "QPE/TaskBar", this ); | 64 | QCopChannel *channel = new QCopChannel ( "QPE/TaskBar", this ); |
65 | connect ( channel, SIGNAL( received ( const QCString &, const QByteArray & )), this, SLOT( receive ( const QCString &, const QByteArray & ))); | 65 | connect ( channel, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT( receive(const QCString&,const QByteArray&))); |
66 | 66 | ||
67 | QHBoxLayout *lay = new QHBoxLayout ( m_taskbar, 4, 4 ); | 67 | QHBoxLayout *lay = new QHBoxLayout ( m_taskbar, 4, 4 ); |
68 | m_input = new InputMethods ( m_taskbar ); | 68 | m_input = new InputMethods ( m_taskbar ); |
69 | connect ( m_input, SIGNAL( inputToggled ( bool )), this, SLOT( calcMaxWindowRect ( ))); | 69 | connect ( m_input, SIGNAL( inputToggled(bool)), this, SLOT( calcMaxWindowRect())); |
70 | lay-> addWidget ( m_input ); | 70 | lay-> addWidget ( m_input ); |
71 | lay-> addStretch ( 10 ); | 71 | lay-> addStretch ( 10 ); |
72 | 72 | ||
73 | setActiveWindow ( ); | 73 | setActiveWindow ( ); |
74 | m_password-> setFocus ( ); | 74 | m_password-> setFocus ( ); |
75 | 75 | ||
76 | m_user-> insertStringList ( lApp-> allUsers ( )); | 76 | m_user-> insertStringList ( lApp-> allUsers ( )); |
77 | 77 | ||
78 | //there is no point in displaying the IM for a zaurus | 78 | //there is no point in displaying the IM for a zaurus |
79 | if (ODevice::inst ( )-> series ( ) != Model_Zaurus){ | 79 | if (ODevice::inst ( )-> series ( ) != Model_Zaurus){ |
80 | QTimer::singleShot ( 0, this, SLOT( showIM ( ))); | 80 | QTimer::singleShot ( 0, this, SLOT( showIM())); |
81 | } | 81 | } |
82 | 82 | ||
83 | QString opiedir = ::getenv ( "OPIEDIR" ); | 83 | QString opiedir = ::getenv ( "OPIEDIR" ); |
84 | QPixmap bgpix ( opiedir + "/pics/launcher/opie-background.jpg" ); | 84 | QPixmap bgpix ( opiedir + "/pics/launcher/opie-background.jpg" ); |
85 | 85 | ||
86 | if ( !bgpix. isNull ( )) { | 86 | if ( !bgpix. isNull ( )) { |
87 | setBackgroundPixmap ( bgpix ); | 87 | setBackgroundPixmap ( bgpix ); |
88 | m_caption-> setBackgroundPixmap ( bgpix); | 88 | m_caption-> setBackgroundPixmap ( bgpix); |
89 | TextLabel1-> setBackgroundPixmap ( bgpix); | 89 | TextLabel1-> setBackgroundPixmap ( bgpix); |
90 | TextLabel2-> setBackgroundPixmap ( bgpix); | 90 | TextLabel2-> setBackgroundPixmap ( bgpix); |
91 | } | 91 | } |
92 | 92 | ||
93 | m_caption-> setText ( tr("<center>Welcome to OPIE %1</center><center>& %2 %3</center>"). arg(QPE_VERSION). arg ( ODevice::inst ( )-> systemString ( )). arg ( ODevice::inst ( )-> systemVersionString ( ))); | 93 | m_caption-> setText ( tr("<center>Welcome to OPIE %1</center><center>& %2 %3</center>"). arg(QPE_VERSION). arg ( ODevice::inst ( )-> systemString ( )). arg ( ODevice::inst ( )-> systemVersionString ( ))); |
94 | 94 | ||
95 | Config cfg ( "opie-login" ); | 95 | Config cfg ( "opie-login" ); |
96 | cfg. setGroup ( "General" ); | 96 | cfg. setGroup ( "General" ); |
97 | QString last = cfg. readEntry ( "LastLogin" ); | 97 | QString last = cfg. readEntry ( "LastLogin" ); |
98 | 98 | ||
99 | if ( !last. isEmpty ( )) | 99 | if ( !last. isEmpty ( )) |
100 | m_user-> setEditText ( last ); | 100 | m_user-> setEditText ( last ); |
101 | 101 | ||
102 | calcMaxWindowRect ( ); | 102 | calcMaxWindowRect ( ); |
103 | } | 103 | } |
104 | 104 | ||
105 | LoginWindowImpl::~LoginWindowImpl ( ) | 105 | LoginWindowImpl::~LoginWindowImpl ( ) |
106 | { | 106 | { |
107 | } | 107 | } |
108 | 108 | ||
109 | 109 | ||
110 | void LoginWindowImpl::receive ( const QCString &msg, const QByteArray &data ) | 110 | void LoginWindowImpl::receive ( const QCString &msg, const QByteArray &data ) |
111 | { | 111 | { |
112 | QDataStream stream ( data, IO_ReadOnly ); | 112 | QDataStream stream ( data, IO_ReadOnly ); |
113 | 113 | ||
114 | if ( msg == "hideInputMethod()" ) | 114 | if ( msg == "hideInputMethod()" ) |
115 | m_input-> hideInputMethod ( ); | 115 | m_input-> hideInputMethod ( ); |
116 | else if ( msg == "showInputMethod()" ) | 116 | else if ( msg == "showInputMethod()" ) |
117 | m_input-> showInputMethod ( ); | 117 | m_input-> showInputMethod ( ); |
118 | else if ( msg == "reloadInputMethods()" ) | 118 | else if ( msg == "reloadInputMethods()" ) |
119 | m_input-> loadInputMethods ( ); | 119 | m_input-> loadInputMethods ( ); |
120 | } | 120 | } |
121 | 121 | ||
122 | void LoginWindowImpl::calcMaxWindowRect ( ) | 122 | void LoginWindowImpl::calcMaxWindowRect ( ) |
123 | { | 123 | { |
124 | #ifdef Q_WS_QWS | 124 | #ifdef Q_WS_QWS |
125 | QRect wr; | 125 | QRect wr; |
126 | int displayWidth = qApp-> desktop ( )-> width ( ); | 126 | int displayWidth = qApp-> desktop ( )-> width ( ); |
127 | QRect ir = m_input-> inputRect ( ); | 127 | QRect ir = m_input-> inputRect ( ); |
128 | if ( ir.isValid() ) | 128 | if ( ir.isValid() ) |
129 | wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); | 129 | wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); |
130 | else | 130 | else |
131 | wr.setCoords( 0, 0, displayWidth-1, m_taskbar->y()-1 ); | 131 | wr.setCoords( 0, 0, displayWidth-1, m_taskbar->y()-1 ); |
132 | 132 | ||
133 | #if QT_VERSION < 300 | 133 | #if QT_VERSION < 300 |
134 | wr = qt_screen-> mapToDevice ( wr, QSize ( qt_screen-> width ( ), qt_screen-> height ( ))); | 134 | wr = qt_screen-> mapToDevice ( wr, QSize ( qt_screen-> width ( ), qt_screen-> height ( ))); |
135 | #endif | 135 | #endif |
136 | 136 | ||
137 | QWSServer::setMaxWindowRect( wr ); | 137 | QWSServer::setMaxWindowRect( wr ); |
138 | #endif | 138 | #endif |
139 | } | 139 | } |
140 | 140 | ||
141 | 141 | ||
142 | void LoginWindowImpl::keyPressEvent ( QKeyEvent *e ) | 142 | void LoginWindowImpl::keyPressEvent ( QKeyEvent *e ) |
143 | { | 143 | { |
144 | switch ( e-> key ( )) { | 144 | switch ( e-> key ( )) { |
145 | case HardKey_Suspend: suspend ( ); | 145 | case HardKey_Suspend: suspend ( ); |
146 | break; | 146 | break; |
147 | case HardKey_Backlight: backlight ( ); | 147 | case HardKey_Backlight: backlight ( ); |
148 | break; | 148 | break; |
149 | default: e-> ignore ( ); | 149 | default: e-> ignore ( ); |
150 | break; | 150 | break; |
151 | } | 151 | } |
152 | LoginWindow::keyPressEvent ( e ); | 152 | LoginWindow::keyPressEvent ( e ); |
153 | } | 153 | } |
154 | 154 | ||
155 | 155 | ||
156 | void LoginWindowImpl::toggleEchoMode ( bool t ) | 156 | void LoginWindowImpl::toggleEchoMode ( bool t ) |
157 | { | 157 | { |
158 | m_password-> setEchoMode ( t ? QLineEdit::Normal : QLineEdit::Password ); | 158 | m_password-> setEchoMode ( t ? QLineEdit::Normal : QLineEdit::Password ); |
159 | } | 159 | } |
160 | 160 | ||
161 | void LoginWindowImpl::showIM ( ) | 161 | void LoginWindowImpl::showIM ( ) |
162 | { | 162 | { |
163 | m_input-> showInputMethod ( ); | 163 | m_input-> showInputMethod ( ); |
164 | } | 164 | } |
165 | 165 | ||
166 | void LoginWindowImpl::restart ( ) | 166 | void LoginWindowImpl::restart ( ) |
167 | { | 167 | { |
168 | qApp-> quit ( ); | 168 | qApp-> quit ( ); |
169 | } | 169 | } |
170 | 170 | ||
171 | void LoginWindowImpl::quit ( ) | 171 | void LoginWindowImpl::quit ( ) |
172 | { | 172 | { |
173 | lApp-> quitToConsole ( ); | 173 | lApp-> quitToConsole ( ); |
174 | } | 174 | } |
175 | 175 | ||
176 | void LoginWindowImpl::suspend ( ) | 176 | void LoginWindowImpl::suspend ( ) |
diff --git a/core/opie-login/main.cpp b/core/opie-login/main.cpp index 7d5792e..8d0976f 100644 --- a/core/opie-login/main.cpp +++ b/core/opie-login/main.cpp | |||
@@ -78,193 +78,193 @@ int main ( int argc, char **argv ) | |||
78 | ::fprintf ( stderr, "%s can only be executed by root. (or chmod +s)", argv [0] ); | 78 | ::fprintf ( stderr, "%s can only be executed by root. (or chmod +s)", argv [0] ); |
79 | return 1; | 79 | return 1; |
80 | } | 80 | } |
81 | if ( ::getuid ( ) != 0 ) // qt doesn't really like SUID and | 81 | if ( ::getuid ( ) != 0 ) // qt doesn't really like SUID and |
82 | ::setuid ( 0 ); // messes up things like config files | 82 | ::setuid ( 0 ); // messes up things like config files |
83 | 83 | ||
84 | char *autolog = 0; | 84 | char *autolog = 0; |
85 | int c; | 85 | int c; |
86 | while (( c = ::getopt_long ( argc, argv, "a:", long_options, 0 )) != -1 ) { | 86 | while (( c = ::getopt_long ( argc, argv, "a:", long_options, 0 )) != -1 ) { |
87 | switch ( c ) { | 87 | switch ( c ) { |
88 | case 'a': | 88 | case 'a': |
89 | autolog = optarg; | 89 | autolog = optarg; |
90 | break; | 90 | break; |
91 | default: | 91 | default: |
92 | ::fprintf ( stderr, "Usage: %s [-a|--autologin=<user>]\n", argv [0] ); | 92 | ::fprintf ( stderr, "Usage: %s [-a|--autologin=<user>]\n", argv [0] ); |
93 | return 2; | 93 | return 2; |
94 | } | 94 | } |
95 | } | 95 | } |
96 | 96 | ||
97 | //struct rlimit rl; | 97 | //struct rlimit rl; |
98 | //::getrlimit ( RLIMIT_NOFILE, &rl ); | 98 | //::getrlimit ( RLIMIT_NOFILE, &rl ); |
99 | 99 | ||
100 | //for ( unsigned int i = 0; i < rl. rlim_cur; i++ ) | 100 | //for ( unsigned int i = 0; i < rl. rlim_cur; i++ ) |
101 | // ::close ( i ); | 101 | // ::close ( i ); |
102 | 102 | ||
103 | ::setpgid ( 0, 0 ); | 103 | ::setpgid ( 0, 0 ); |
104 | ::setsid ( ); | 104 | ::setsid ( ); |
105 | 105 | ||
106 | ::signal ( SIGTERM, sigterm ); | 106 | ::signal ( SIGTERM, sigterm ); |
107 | ::signal ( SIGINT, sigterm ); | 107 | ::signal ( SIGINT, sigterm ); |
108 | 108 | ||
109 | ::openlog ( "opie-login", LOG_CONS, LOG_AUTHPRIV ); | 109 | ::openlog ( "opie-login", LOG_CONS, LOG_AUTHPRIV ); |
110 | ::atexit ( exit_closelog ); | 110 | ::atexit ( exit_closelog ); |
111 | 111 | ||
112 | while ( true ) { | 112 | while ( true ) { |
113 | pid_t child = ::fork ( ); | 113 | pid_t child = ::fork ( ); |
114 | 114 | ||
115 | if ( child < 0 ) { | 115 | if ( child < 0 ) { |
116 | ::syslog ( LOG_ERR, "Could not fork GUI process\n" ); | 116 | ::syslog ( LOG_ERR, "Could not fork GUI process\n" ); |
117 | break; | 117 | break; |
118 | } | 118 | } |
119 | else if ( child > 0 ) { | 119 | else if ( child > 0 ) { |
120 | int status = 0; | 120 | int status = 0; |
121 | time_t started = ::time ( 0 ); | 121 | time_t started = ::time ( 0 ); |
122 | 122 | ||
123 | while ( ::waitpid ( child, &status, 0 ) < 0 ) { } | 123 | while ( ::waitpid ( child, &status, 0 ) < 0 ) { } |
124 | 124 | ||
125 | LoginApplication::logout ( ); | 125 | LoginApplication::logout ( ); |
126 | 126 | ||
127 | if (( ::time ( 0 ) - started ) < 3 ) { | 127 | if (( ::time ( 0 ) - started ) < 3 ) { |
128 | if ( autolog ) { | 128 | if ( autolog ) { |
129 | ::syslog ( LOG_ERR, "Respawning too fast -- disabling auto-login\n" ); | 129 | ::syslog ( LOG_ERR, "Respawning too fast -- disabling auto-login\n" ); |
130 | autolog = 0; | 130 | autolog = 0; |
131 | } | 131 | } |
132 | else { | 132 | else { |
133 | ::syslog ( LOG_ERR, "Respawning too fast -- going down\n" ); | 133 | ::syslog ( LOG_ERR, "Respawning too fast -- going down\n" ); |
134 | break; | 134 | break; |
135 | } | 135 | } |
136 | } | 136 | } |
137 | int killedbysig = 0; | 137 | int killedbysig = 0; |
138 | userExited=0; | 138 | userExited=0; |
139 | if (WIFEXITED(status)!=0 ) { | 139 | if (WIFEXITED(status)!=0 ) { |
140 | if (WEXITSTATUS(status)==137) { | 140 | if (WEXITSTATUS(status)==137) { |
141 | userExited=1; | 141 | userExited=1; |
142 | } | 142 | } |
143 | } | 143 | } |
144 | 144 | ||
145 | if ( WIFSIGNALED( status )) { | 145 | if ( WIFSIGNALED( status )) { |
146 | switch ( WTERMSIG( status )) { | 146 | switch ( WTERMSIG( status )) { |
147 | case SIGTERM: | 147 | case SIGTERM: |
148 | case SIGINT : | 148 | case SIGINT : |
149 | case SIGKILL: | 149 | case SIGKILL: |
150 | break; | 150 | break; |
151 | 151 | ||
152 | default : | 152 | default : |
153 | killedbysig = WTERMSIG( status ); | 153 | killedbysig = WTERMSIG( status ); |
154 | break; | 154 | break; |
155 | } | 155 | } |
156 | } | 156 | } |
157 | if ( killedbysig ) { // qpe was killed by an uncaught signal | 157 | if ( killedbysig ) { // qpe was killed by an uncaught signal |
158 | qApp = 0; | 158 | qApp = 0; |
159 | 159 | ||
160 | ::syslog ( LOG_ERR, "Opie was killed by a signal #%d", killedbysig ); | 160 | ::syslog ( LOG_ERR, "Opie was killed by a signal #%d", killedbysig ); |
161 | 161 | ||
162 | QWSServer::setDesktopBackground ( QImage ( )); | 162 | QWSServer::setDesktopBackground ( QImage ( )); |
163 | QApplication *app = new QApplication ( argc, argv, QApplication::GuiServer ); | 163 | QApplication *app = new QApplication ( argc, argv, QApplication::GuiServer ); |
164 | app-> setFont ( QFont ( "Helvetica", 10 )); | 164 | app-> setFont ( QFont ( "Helvetica", 10 )); |
165 | app-> setStyle ( new QPEStyle ( )); | 165 | app-> setStyle ( new QPEStyle ( )); |
166 | 166 | ||
167 | const char *sig = ::strsignal ( killedbysig ); | 167 | const char *sig = ::strsignal ( killedbysig ); |
168 | QLabel *l = new QLabel ( 0, "sig", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_Tool ); | 168 | QLabel *l = new QLabel ( 0, "sig", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_Tool ); |
169 | l-> setText ( LoginWindowImpl::tr( "Opie was terminated\nby an uncaught signal\n(%1)\n" ). arg ( sig )); | 169 | l-> setText ( LoginWindowImpl::tr( "Opie was terminated\nby an uncaught signal\n(%1)\n" ). arg ( sig )); |
170 | l-> setAlignment ( Qt::AlignCenter ); | 170 | l-> setAlignment ( Qt::AlignCenter ); |
171 | l-> move ( 0, 0 ); | 171 | l-> move ( 0, 0 ); |
172 | l-> resize ( app-> desktop ( )-> width ( ), app-> desktop ( )-> height ( )); | 172 | l-> resize ( app-> desktop ( )-> width ( ), app-> desktop ( )-> height ( )); |
173 | l-> show ( ); | 173 | l-> show ( ); |
174 | QTimer::singleShot ( 3000, app, SLOT( quit ( ))); | 174 | QTimer::singleShot ( 3000, app, SLOT( quit())); |
175 | app-> exec ( ); | 175 | app-> exec ( ); |
176 | delete app; | 176 | delete app; |
177 | qApp = 0; | 177 | qApp = 0; |
178 | } | 178 | } |
179 | } | 179 | } |
180 | else { | 180 | else { |
181 | if ( !autolog ) { | 181 | if ( !autolog ) { |
182 | QString confFile=QPEApplication::qpeDir() + "/etc/opie-login.conf"; | 182 | QString confFile=QPEApplication::qpeDir() + "/etc/opie-login.conf"; |
183 | Config cfg ( confFile, Config::File ); | 183 | Config cfg ( confFile, Config::File ); |
184 | cfg. setGroup ( "General" ); | 184 | cfg. setGroup ( "General" ); |
185 | QString user = cfg. readEntry ( "AutoLogin" ); | 185 | QString user = cfg. readEntry ( "AutoLogin" ); |
186 | 186 | ||
187 | if ( !user. isEmpty ( )) | 187 | if ( !user. isEmpty ( )) |
188 | autolog = ::strdup ( user. latin1 ( )); | 188 | autolog = ::strdup ( user. latin1 ( )); |
189 | } | 189 | } |
190 | 190 | ||
191 | if ( autolog && !userExited ) { | 191 | if ( autolog && !userExited ) { |
192 | 192 | ||
193 | QWSServer::setDesktopBackground( QImage() ); | 193 | QWSServer::setDesktopBackground( QImage() ); |
194 | ODevice::inst ( )-> setDisplayStatus ( true ); | 194 | ODevice::inst ( )-> setDisplayStatus ( true ); |
195 | ODevice::inst ( )-> setSoftSuspend ( false ); | 195 | ODevice::inst ( )-> setSoftSuspend ( false ); |
196 | LoginApplication *app = new LoginApplication ( argc, argv, ppid ); | 196 | LoginApplication *app = new LoginApplication ( argc, argv, ppid ); |
197 | LoginApplication::setLoginAs ( autolog ); | 197 | LoginApplication::setLoginAs ( autolog ); |
198 | 198 | ||
199 | 199 | ||
200 | if ( LoginApplication::changeIdentity ( )) | 200 | if ( LoginApplication::changeIdentity ( )) |
201 | ::exit ( LoginApplication::login ( )); | 201 | ::exit ( LoginApplication::login ( )); |
202 | else | 202 | else |
203 | ::exit ( 0 ); | 203 | ::exit ( 0 ); |
204 | } | 204 | } |
205 | else { | 205 | else { |
206 | ::exit ( login_main ( argc, argv, ppid )); | 206 | ::exit ( login_main ( argc, argv, ppid )); |
207 | } | 207 | } |
208 | } | 208 | } |
209 | } | 209 | } |
210 | return 0; | 210 | return 0; |
211 | } | 211 | } |
212 | 212 | ||
213 | void sigterm ( int /*sig*/ ) | 213 | void sigterm ( int /*sig*/ ) |
214 | { | 214 | { |
215 | ::exit ( 0 ); | 215 | ::exit ( 0 ); |
216 | } | 216 | } |
217 | 217 | ||
218 | 218 | ||
219 | void exit_closelog ( ) | 219 | void exit_closelog ( ) |
220 | { | 220 | { |
221 | ::closelog ( ); | 221 | ::closelog ( ); |
222 | } | 222 | } |
223 | 223 | ||
224 | 224 | ||
225 | class LoginScreenSaver : public QWSScreenSaver | 225 | class LoginScreenSaver : public QWSScreenSaver |
226 | { | 226 | { |
227 | public: | 227 | public: |
228 | LoginScreenSaver ( ) | 228 | LoginScreenSaver ( ) |
229 | { | 229 | { |
230 | m_lcd_status = true; | 230 | m_lcd_status = true; |
231 | 231 | ||
232 | m_backlight_bright = -1; | 232 | m_backlight_bright = -1; |
233 | m_backlight_forcedoff = false; | 233 | m_backlight_forcedoff = false; |
234 | 234 | ||
235 | // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) | 235 | // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) |
236 | ODevice::inst ( )-> setDisplayStatus ( true ); | 236 | ODevice::inst ( )-> setDisplayStatus ( true ); |
237 | } | 237 | } |
238 | void restore() | 238 | void restore() |
239 | { | 239 | { |
240 | if ( !m_lcd_status ) // We must have turned it off | 240 | if ( !m_lcd_status ) // We must have turned it off |
241 | ODevice::inst ( ) -> setDisplayStatus ( true ); | 241 | ODevice::inst ( ) -> setDisplayStatus ( true ); |
242 | 242 | ||
243 | setBacklight ( -3 ); | 243 | setBacklight ( -3 ); |
244 | } | 244 | } |
245 | bool save( int level ) | 245 | bool save( int level ) |
246 | { | 246 | { |
247 | switch ( level ) { | 247 | switch ( level ) { |
248 | case 0: | 248 | case 0: |
249 | if ( backlight() > 1 ) | 249 | if ( backlight() > 1 ) |
250 | setBacklight( 1 ); // lowest non-off | 250 | setBacklight( 1 ); // lowest non-off |
251 | return true; | 251 | return true; |
252 | break; | 252 | break; |
253 | case 1: | 253 | case 1: |
254 | setBacklight( 0 ); // off | 254 | setBacklight( 0 ); // off |
255 | return true; | 255 | return true; |
256 | break; | 256 | break; |
257 | case 2: | 257 | case 2: |
258 | // We're going to suspend the whole machine | 258 | // We're going to suspend the whole machine |
259 | if ( PowerStatusManager::readStatus().acStatus() != PowerStatus::Online ) { | 259 | if ( PowerStatusManager::readStatus().acStatus() != PowerStatus::Online ) { |
260 | QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); | 260 | QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); |
261 | return true; | 261 | return true; |
262 | } | 262 | } |
263 | break; | 263 | break; |
264 | } | 264 | } |
265 | return false; | 265 | return false; |
266 | } | 266 | } |
267 | 267 | ||
268 | private: | 268 | private: |
269 | public: | 269 | public: |
270 | void setIntervals( int i1 = 30, int i2 = 20, int i3 = 60 ) | 270 | void setIntervals( int i1 = 30, int i2 = 20, int i3 = 60 ) |
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp index f7bff58..29f4383 100644 --- a/core/pim/addressbook/abtable.cpp +++ b/core/pim/addressbook/abtable.cpp | |||
@@ -34,193 +34,193 @@ | |||
34 | #include <stdlib.h> | 34 | #include <stdlib.h> |
35 | 35 | ||
36 | #include <ctype.h> //toupper() for key hack | 36 | #include <ctype.h> //toupper() for key hack |
37 | 37 | ||
38 | #if 0 | 38 | #if 0 |
39 | 39 | ||
40 | /*! | 40 | /*! |
41 | \class AbTableItem abtable.h | 41 | \class AbTableItem abtable.h |
42 | 42 | ||
43 | \brief QTableItem based class for showing a field of an entry | 43 | \brief QTableItem based class for showing a field of an entry |
44 | */ | 44 | */ |
45 | 45 | ||
46 | AbTableItem::AbTableItem( QTable *t, EditType et, const QString &s, | 46 | AbTableItem::AbTableItem( QTable *t, EditType et, const QString &s, |
47 | const QString &secondSortKey) | 47 | const QString &secondSortKey) |
48 | : QTableItem( t, et, s ) | 48 | : QTableItem( t, et, s ) |
49 | { | 49 | { |
50 | // sortKey = s.lower() + QChar( '\0' ) + secondSortKey.lower(); | 50 | // sortKey = s.lower() + QChar( '\0' ) + secondSortKey.lower(); |
51 | sortKey = Qtopia::buildSortKey( s, secondSortKey ); | 51 | sortKey = Qtopia::buildSortKey( s, secondSortKey ); |
52 | } | 52 | } |
53 | 53 | ||
54 | int AbTableItem::alignment() const | 54 | int AbTableItem::alignment() const |
55 | { | 55 | { |
56 | return AlignLeft|AlignVCenter; | 56 | return AlignLeft|AlignVCenter; |
57 | } | 57 | } |
58 | 58 | ||
59 | QString AbTableItem::key() const | 59 | QString AbTableItem::key() const |
60 | { | 60 | { |
61 | return sortKey; | 61 | return sortKey; |
62 | } | 62 | } |
63 | 63 | ||
64 | // A way to reset the item, without out doing a delete or a new... | 64 | // A way to reset the item, without out doing a delete or a new... |
65 | void AbTableItem::setItem( const QString &txt, const QString &secondKey ) | 65 | void AbTableItem::setItem( const QString &txt, const QString &secondKey ) |
66 | { | 66 | { |
67 | setText( txt ); | 67 | setText( txt ); |
68 | sortKey = Qtopia::buildSortKey( txt, secondKey ); | 68 | sortKey = Qtopia::buildSortKey( txt, secondKey ); |
69 | 69 | ||
70 | // sortKey = txt.lower() + QChar( '\0' ) + secondKey.lower(); | 70 | // sortKey = txt.lower() + QChar( '\0' ) + secondKey.lower(); |
71 | } | 71 | } |
72 | 72 | ||
73 | /*! | 73 | /*! |
74 | \class AbPickItem abtable.h | 74 | \class AbPickItem abtable.h |
75 | 75 | ||
76 | \brief QTableItem based class for showing slection of an entry | 76 | \brief QTableItem based class for showing slection of an entry |
77 | */ | 77 | */ |
78 | 78 | ||
79 | AbPickItem::AbPickItem( QTable *t ) : | 79 | AbPickItem::AbPickItem( QTable *t ) : |
80 | QTableItem(t, WhenCurrent, "?") | 80 | QTableItem(t, WhenCurrent, "?") |
81 | { | 81 | { |
82 | } | 82 | } |
83 | 83 | ||
84 | QWidget *AbPickItem::createEditor() const | 84 | QWidget *AbPickItem::createEditor() const |
85 | { | 85 | { |
86 | QComboBox* combo = new QComboBox( table()->viewport() ); | 86 | QComboBox* combo = new QComboBox( table()->viewport() ); |
87 | ( (AbPickItem*)this )->cb = combo; | 87 | ( (AbPickItem*)this )->cb = combo; |
88 | AbTable* t = static_cast<AbTable*>(table()); | 88 | AbTable* t = static_cast<AbTable*>(table()); |
89 | QStringList c = t->choiceNames(); | 89 | QStringList c = t->choiceNames(); |
90 | int cur = 0; | 90 | int cur = 0; |
91 | for (QStringList::ConstIterator it = c.begin(); it!=c.end(); ++it) { | 91 | for (QStringList::ConstIterator it = c.begin(); it!=c.end(); ++it) { |
92 | if ( *it == text() ) | 92 | if ( *it == text() ) |
93 | cur = combo->count(); | 93 | cur = combo->count(); |
94 | combo->insertItem(*it); | 94 | combo->insertItem(*it); |
95 | } | 95 | } |
96 | combo->setCurrentItem(cur); | 96 | combo->setCurrentItem(cur); |
97 | return combo; | 97 | return combo; |
98 | } | 98 | } |
99 | 99 | ||
100 | void AbPickItem::setContentFromEditor( QWidget *w ) | 100 | void AbPickItem::setContentFromEditor( QWidget *w ) |
101 | { | 101 | { |
102 | if ( w->inherits("QComboBox") ) | 102 | if ( w->inherits("QComboBox") ) |
103 | setText( ( (QComboBox*)w )->currentText() ); | 103 | setText( ( (QComboBox*)w )->currentText() ); |
104 | else | 104 | else |
105 | QTableItem::setContentFromEditor( w ); | 105 | QTableItem::setContentFromEditor( w ); |
106 | } | 106 | } |
107 | 107 | ||
108 | #endif | 108 | #endif |
109 | 109 | ||
110 | /*! | 110 | /*! |
111 | \class AbTable abtable.h | 111 | \class AbTable abtable.h |
112 | 112 | ||
113 | \brief QTable based class for showing a list of entries | 113 | \brief QTable based class for showing a list of entries |
114 | */ | 114 | */ |
115 | 115 | ||
116 | AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name ) | 116 | AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name ) |
117 | : QTable( parent, name ), | 117 | : QTable( parent, name ), |
118 | lastSortCol( -1 ), | 118 | lastSortCol( -1 ), |
119 | asc( TRUE ), | 119 | asc( TRUE ), |
120 | intFields( order ), | 120 | intFields( order ), |
121 | enablePainting( true ), | 121 | enablePainting( true ), |
122 | columnVisible( true ), | 122 | columnVisible( true ), |
123 | countNested( 0 ) | 123 | countNested( 0 ) |
124 | { | 124 | { |
125 | //qWarning("C'tor start"); | 125 | //qWarning("C'tor start"); |
126 | 126 | ||
127 | setSelectionMode( NoSelection ); | 127 | setSelectionMode( NoSelection ); |
128 | init(); | 128 | init(); |
129 | setSorting( TRUE ); | 129 | setSorting( TRUE ); |
130 | connect( this, SIGNAL(clicked(int,int,int,const QPoint &)), | 130 | connect( this, SIGNAL(clicked(int,int,int,const QPoint&)), |
131 | this, SLOT(itemClicked(int,int)) ); | 131 | this, SLOT(itemClicked(int,int)) ); |
132 | 132 | ||
133 | // contactList.clear(); | 133 | // contactList.clear(); |
134 | //qWarning("C'tor end"); | 134 | //qWarning("C'tor end"); |
135 | } | 135 | } |
136 | 136 | ||
137 | AbTable::~AbTable() | 137 | AbTable::~AbTable() |
138 | { | 138 | { |
139 | } | 139 | } |
140 | 140 | ||
141 | void AbTable::init() | 141 | void AbTable::init() |
142 | { | 142 | { |
143 | // :SX showChar = '\0'; | 143 | // :SX showChar = '\0'; |
144 | setNumRows( 0 ); | 144 | setNumRows( 0 ); |
145 | setNumCols( 2 ); | 145 | setNumCols( 2 ); |
146 | 146 | ||
147 | horizontalHeader()->setLabel( 0, tr( "Full Name" )); | 147 | horizontalHeader()->setLabel( 0, tr( "Full Name" )); |
148 | horizontalHeader()->setLabel( 1, tr( "Contact" )); | 148 | horizontalHeader()->setLabel( 1, tr( "Contact" )); |
149 | setLeftMargin( 0 ); | 149 | setLeftMargin( 0 ); |
150 | verticalHeader()->hide(); | 150 | verticalHeader()->hide(); |
151 | columnVisible = true; | 151 | columnVisible = true; |
152 | } | 152 | } |
153 | 153 | ||
154 | void AbTable::setContacts( const OContactAccess::List& viewList ) | 154 | void AbTable::setContacts( const OContactAccess::List& viewList ) |
155 | { | 155 | { |
156 | qWarning("AbTable::setContacts()"); | 156 | qWarning("AbTable::setContacts()"); |
157 | 157 | ||
158 | clear(); | 158 | clear(); |
159 | m_viewList = viewList; | 159 | m_viewList = viewList; |
160 | 160 | ||
161 | setSorting( false ); | 161 | setSorting( false ); |
162 | setPaintingEnabled( FALSE ); | 162 | setPaintingEnabled( FALSE ); |
163 | 163 | ||
164 | OContactAccess::List::Iterator it; | 164 | OContactAccess::List::Iterator it; |
165 | setNumRows( m_viewList.count() ); | 165 | setNumRows( m_viewList.count() ); |
166 | //int row = 0; | 166 | //int row = 0; |
167 | // for ( it = m_viewList.begin(); it != m_viewList.end(); ++it ) | 167 | // for ( it = m_viewList.begin(); it != m_viewList.end(); ++it ) |
168 | // insertIntoTable( *it, row++ ); | 168 | // insertIntoTable( *it, row++ ); |
169 | 169 | ||
170 | // setSorting( true ); | 170 | // setSorting( true ); |
171 | 171 | ||
172 | // resort(); | 172 | // resort(); |
173 | 173 | ||
174 | updateVisible(); | 174 | updateVisible(); |
175 | 175 | ||
176 | setPaintingEnabled( TRUE ); | 176 | setPaintingEnabled( TRUE ); |
177 | 177 | ||
178 | } | 178 | } |
179 | 179 | ||
180 | void AbTable::setOrderedList( const QValueList<int> ordered ) | 180 | void AbTable::setOrderedList( const QValueList<int> ordered ) |
181 | { | 181 | { |
182 | intFields = ordered; | 182 | intFields = ordered; |
183 | } | 183 | } |
184 | 184 | ||
185 | 185 | ||
186 | bool AbTable::selectContact( int UID ) | 186 | bool AbTable::selectContact( int UID ) |
187 | { | 187 | { |
188 | qWarning( "AbTable::selectContact( %d )", UID ); | 188 | qWarning( "AbTable::selectContact( %d )", UID ); |
189 | int rows = numRows(); | 189 | int rows = numRows(); |
190 | OContact* foundContact = 0l; | 190 | OContact* foundContact = 0l; |
191 | bool found = false; | 191 | bool found = false; |
192 | 192 | ||
193 | setPaintingEnabled( FALSE ); | 193 | setPaintingEnabled( FALSE ); |
194 | qWarning( "search start" ); | 194 | qWarning( "search start" ); |
195 | for ( int r = 0; r < rows; ++r ) { | 195 | for ( int r = 0; r < rows; ++r ) { |
196 | if ( m_viewList.uidAt( r ) == UID ){ | 196 | if ( m_viewList.uidAt( r ) == UID ){ |
197 | ensureCellVisible( r, 0 ); | 197 | ensureCellVisible( r, 0 ); |
198 | setCurrentCell( r, 0 ); | 198 | setCurrentCell( r, 0 ); |
199 | found = true; | 199 | found = true; |
200 | break; | 200 | break; |
201 | } | 201 | } |
202 | } | 202 | } |
203 | qWarning( "search end" ); | 203 | qWarning( "search end" ); |
204 | 204 | ||
205 | if ( !found ){ | 205 | if ( !found ){ |
206 | ensureCellVisible( 0,0 ); | 206 | ensureCellVisible( 0,0 ); |
207 | setCurrentCell( 0, 0 ); | 207 | setCurrentCell( 0, 0 ); |
208 | } | 208 | } |
209 | 209 | ||
210 | setPaintingEnabled( TRUE ); | 210 | setPaintingEnabled( TRUE ); |
211 | 211 | ||
212 | return true; | 212 | return true; |
213 | } | 213 | } |
214 | 214 | ||
215 | #if 0 | 215 | #if 0 |
216 | void AbTable::insertIntoTable( const OContact& cnt, int row ) | 216 | void AbTable::insertIntoTable( const OContact& cnt, int row ) |
217 | { | 217 | { |
218 | qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row ); | 218 | qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row ); |
219 | QString strName; | 219 | QString strName; |
220 | ContactItem contactItem; | 220 | ContactItem contactItem; |
221 | 221 | ||
222 | strName = findContactName( cnt ); | 222 | strName = findContactName( cnt ); |
223 | contactItem = findContactContact( cnt, row ); | 223 | contactItem = findContactContact( cnt, row ); |
224 | 224 | ||
225 | AbTableItem *ati; | 225 | AbTableItem *ati; |
226 | ati = new AbTableItem( this, QTableItem::Never, strName, contactItem.value ); | 226 | ati = new AbTableItem( this, QTableItem::Never, strName, contactItem.value ); |
diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp index 670cdb0..8d61582 100644 --- a/core/pim/addressbook/abview.cpp +++ b/core/pim/addressbook/abview.cpp | |||
@@ -1,179 +1,179 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (c) 2002 Stefan Eilers (eilers.stefan@epost.de) | 2 | ** Copyright (c) 2002 Stefan Eilers (eilers.stefan@epost.de) |
3 | ** | 3 | ** |
4 | ** This file is part of Qt Palmtop Environment. | 4 | ** This file is part of Qt Palmtop Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** | 14 | ** |
15 | **********************************************************************/ | 15 | **********************************************************************/ |
16 | 16 | ||
17 | #include "abview.h" | 17 | #include "abview.h" |
18 | 18 | ||
19 | #include <qlayout.h> | 19 | #include <qlayout.h> |
20 | 20 | ||
21 | #include <qpe/global.h> | 21 | #include <qpe/global.h> |
22 | 22 | ||
23 | #include <opie/ocontactaccessbackend_vcard.h> | 23 | #include <opie/ocontactaccessbackend_vcard.h> |
24 | 24 | ||
25 | #include <assert.h> | 25 | #include <assert.h> |
26 | 26 | ||
27 | 27 | ||
28 | // Is defined in LibQPE | 28 | // Is defined in LibQPE |
29 | extern QString categoryFileName(); | 29 | extern QString categoryFileName(); |
30 | 30 | ||
31 | QString addressbookPersonalVCardName() | 31 | QString addressbookPersonalVCardName() |
32 | { | 32 | { |
33 | QString filename = Global::applicationFileName("addressbook", | 33 | QString filename = Global::applicationFileName("addressbook", |
34 | "businesscard.vcf"); | 34 | "businesscard.vcf"); |
35 | return filename; | 35 | return filename; |
36 | } | 36 | } |
37 | 37 | ||
38 | 38 | ||
39 | AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ): | 39 | AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ): |
40 | QWidget(parent), | 40 | QWidget(parent), |
41 | mCat(0), | 41 | mCat(0), |
42 | m_inSearch( false ), | 42 | m_inSearch( false ), |
43 | m_inPersonal( false ), | 43 | m_inPersonal( false ), |
44 | m_curr_category( -1 ), | 44 | m_curr_category( -1 ), |
45 | m_curr_View( TableView ), | 45 | m_curr_View( TableView ), |
46 | m_prev_View( TableView ), | 46 | m_prev_View( TableView ), |
47 | m_curr_Contact ( 0 ), | 47 | m_curr_Contact ( 0 ), |
48 | m_contactdb ( 0l ), | 48 | m_contactdb ( 0l ), |
49 | m_storedDB ( 0l ), | 49 | m_storedDB ( 0l ), |
50 | m_viewStack( 0l ), | 50 | m_viewStack( 0l ), |
51 | m_abTable( 0l ), | 51 | m_abTable( 0l ), |
52 | m_orderedFields( ordered ) | 52 | m_orderedFields( ordered ) |
53 | { | 53 | { |
54 | qWarning("AbView::c'tor"); | 54 | qWarning("AbView::c'tor"); |
55 | // Load default database and handle syncing myself.. ! | 55 | // Load default database and handle syncing myself.. ! |
56 | m_contactdb = new OContactAccess ( "addressbook", 0l, 0l, false ); | 56 | m_contactdb = new OContactAccess ( "addressbook", 0l, 0l, false ); |
57 | m_contactdb -> setReadAhead( 16 ); // Use ReadAhead-Cache if available | 57 | m_contactdb -> setReadAhead( 16 ); // Use ReadAhead-Cache if available |
58 | mCat.load( categoryFileName() ); | 58 | mCat.load( categoryFileName() ); |
59 | 59 | ||
60 | // Create Layout and put WidgetStack into it. | 60 | // Create Layout and put WidgetStack into it. |
61 | QVBoxLayout *vb = new QVBoxLayout( this ); | 61 | QVBoxLayout *vb = new QVBoxLayout( this ); |
62 | m_viewStack = new QWidgetStack( this ); | 62 | m_viewStack = new QWidgetStack( this ); |
63 | vb->addWidget( m_viewStack ); | 63 | vb->addWidget( m_viewStack ); |
64 | 64 | ||
65 | // Creat TableView | 65 | // Creat TableView |
66 | QVBox* tableBox = new QVBox( m_viewStack ); | 66 | QVBox* tableBox = new QVBox( m_viewStack ); |
67 | m_abTable = new AbTable( m_orderedFields, tableBox, "table" ); | 67 | m_abTable = new AbTable( m_orderedFields, tableBox, "table" ); |
68 | m_abTable->setCurrentCell( 0, 0 ); | 68 | m_abTable->setCurrentCell( 0, 0 ); |
69 | m_abTable->setFocus(); | 69 | m_abTable->setFocus(); |
70 | 70 | ||
71 | // Add TableView to WidgetStack and raise it | 71 | // Add TableView to WidgetStack and raise it |
72 | m_viewStack -> addWidget( tableBox , TableView ); | 72 | m_viewStack -> addWidget( tableBox , TableView ); |
73 | 73 | ||
74 | // Create CardView and add it to WidgetStack | 74 | // Create CardView and add it to WidgetStack |
75 | QVBox* cardBox = new QVBox( m_viewStack ); | 75 | QVBox* cardBox = new QVBox( m_viewStack ); |
76 | m_ablabel = new AbLabel( cardBox, "CardView"); | 76 | m_ablabel = new AbLabel( cardBox, "CardView"); |
77 | m_viewStack -> addWidget( cardBox , CardView ); | 77 | m_viewStack -> addWidget( cardBox , CardView ); |
78 | 78 | ||
79 | // Connect views to me | 79 | // Connect views to me |
80 | connect ( m_abTable, SIGNAL( signalSwitch( void ) ), | 80 | connect ( m_abTable, SIGNAL( signalSwitch(void) ), |
81 | this, SLOT( slotSwitch( void ) ) ); | 81 | this, SLOT( slotSwitch(void) ) ); |
82 | connect ( m_ablabel, SIGNAL( signalOkPressed( void ) ), | 82 | connect ( m_ablabel, SIGNAL( signalOkPressed(void) ), |
83 | this, SLOT( slotSwitch( void ) ) ); | 83 | this, SLOT( slotSwitch(void) ) ); |
84 | 84 | ||
85 | load(); | 85 | load(); |
86 | } | 86 | } |
87 | 87 | ||
88 | AbView::~AbView() | 88 | AbView::~AbView() |
89 | { | 89 | { |
90 | m_contactdb -> save(); | 90 | m_contactdb -> save(); |
91 | delete m_contactdb; | 91 | delete m_contactdb; |
92 | 92 | ||
93 | if ( m_storedDB ){ | 93 | if ( m_storedDB ){ |
94 | m_storedDB -> save(); | 94 | m_storedDB -> save(); |
95 | delete m_storedDB; | 95 | delete m_storedDB; |
96 | } | 96 | } |
97 | } | 97 | } |
98 | 98 | ||
99 | 99 | ||
100 | void AbView::setView( Views view ) | 100 | void AbView::setView( Views view ) |
101 | { | 101 | { |
102 | qWarning("AbView::setView( Views view )"); | 102 | qWarning("AbView::setView( Views view )"); |
103 | m_curr_View = view; | 103 | m_curr_View = view; |
104 | load(); | 104 | load(); |
105 | } | 105 | } |
106 | 106 | ||
107 | void AbView::addEntry( const OContact &newContact ) | 107 | void AbView::addEntry( const OContact &newContact ) |
108 | { | 108 | { |
109 | qWarning("abview:AddContact"); | 109 | qWarning("abview:AddContact"); |
110 | m_contactdb->add ( newContact ); | 110 | m_contactdb->add ( newContact ); |
111 | load(); | 111 | load(); |
112 | 112 | ||
113 | } | 113 | } |
114 | void AbView::removeEntry( const int UID ) | 114 | void AbView::removeEntry( const int UID ) |
115 | { | 115 | { |
116 | qWarning("abview:RemoveContact"); | 116 | qWarning("abview:RemoveContact"); |
117 | m_contactdb->remove( UID ); | 117 | m_contactdb->remove( UID ); |
118 | load(); | 118 | load(); |
119 | } | 119 | } |
120 | 120 | ||
121 | void AbView::replaceEntry( const OContact &contact ) | 121 | void AbView::replaceEntry( const OContact &contact ) |
122 | { | 122 | { |
123 | qWarning("abview:ReplaceContact"); | 123 | qWarning("abview:ReplaceContact"); |
124 | m_contactdb->replace( contact ); | 124 | m_contactdb->replace( contact ); |
125 | load(); | 125 | load(); |
126 | 126 | ||
127 | } | 127 | } |
128 | 128 | ||
129 | OContact AbView::currentEntry() | 129 | OContact AbView::currentEntry() |
130 | { | 130 | { |
131 | OContact currentContact; | 131 | OContact currentContact; |
132 | 132 | ||
133 | switch ( (int) m_curr_View ) { | 133 | switch ( (int) m_curr_View ) { |
134 | case TableView: | 134 | case TableView: |
135 | currentContact = m_abTable -> currentEntry(); | 135 | currentContact = m_abTable -> currentEntry(); |
136 | break; | 136 | break; |
137 | case CardView: | 137 | case CardView: |
138 | currentContact = m_ablabel -> currentEntry(); | 138 | currentContact = m_ablabel -> currentEntry(); |
139 | break; | 139 | break; |
140 | } | 140 | } |
141 | m_curr_Contact = currentContact.uid(); | 141 | m_curr_Contact = currentContact.uid(); |
142 | return currentContact; | 142 | return currentContact; |
143 | } | 143 | } |
144 | 144 | ||
145 | bool AbView::save() | 145 | bool AbView::save() |
146 | { | 146 | { |
147 | //qWarning("abView:Save data"); | 147 | //qWarning("abView:Save data"); |
148 | 148 | ||
149 | return m_contactdb->save(); | 149 | return m_contactdb->save(); |
150 | } | 150 | } |
151 | 151 | ||
152 | void AbView::load() | 152 | void AbView::load() |
153 | { | 153 | { |
154 | qWarning("abView:Load data"); | 154 | qWarning("abView:Load data"); |
155 | 155 | ||
156 | // Letter Search is stopped at this place | 156 | // Letter Search is stopped at this place |
157 | emit signalClearLetterPicker(); | 157 | emit signalClearLetterPicker(); |
158 | 158 | ||
159 | if ( m_inPersonal ) | 159 | if ( m_inPersonal ) |
160 | // VCard Backend does not sort.. | 160 | // VCard Backend does not sort.. |
161 | m_list = m_contactdb->allRecords(); | 161 | m_list = m_contactdb->allRecords(); |
162 | else{ | 162 | else{ |
163 | m_list = m_contactdb->sorted( true, 0, 0, 0 ); | 163 | m_list = m_contactdb->sorted( true, 0, 0, 0 ); |
164 | if ( m_curr_category != -1 ) | 164 | if ( m_curr_category != -1 ) |
165 | clearForCategory(); | 165 | clearForCategory(); |
166 | } | 166 | } |
167 | 167 | ||
168 | qWarning ("Number of contacts: %d", m_list.count()); | 168 | qWarning ("Number of contacts: %d", m_list.count()); |
169 | 169 | ||
170 | updateView( true ); | 170 | updateView( true ); |
171 | 171 | ||
172 | } | 172 | } |
173 | 173 | ||
174 | void AbView::reload() | 174 | void AbView::reload() |
175 | { | 175 | { |
176 | qWarning( "void AbView::reload()" ); | 176 | qWarning( "void AbView::reload()" ); |
177 | 177 | ||
178 | m_contactdb->reload(); | 178 | m_contactdb->reload(); |
179 | load(); | 179 | load(); |
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp index 9cf55b3..8a5f9d5 100644 --- a/core/pim/addressbook/addressbook.cpp +++ b/core/pim/addressbook/addressbook.cpp | |||
@@ -42,313 +42,313 @@ | |||
42 | #include <qtoolbutton.h> | 42 | #include <qtoolbutton.h> |
43 | 43 | ||
44 | #include <stdlib.h> | 44 | #include <stdlib.h> |
45 | #include <sys/stat.h> | 45 | #include <sys/stat.h> |
46 | #include <sys/types.h> | 46 | #include <sys/types.h> |
47 | #include <fcntl.h> | 47 | #include <fcntl.h> |
48 | #include <unistd.h> | 48 | #include <unistd.h> |
49 | 49 | ||
50 | 50 | ||
51 | #include "picker.h" | 51 | #include "picker.h" |
52 | #include "configdlg.h" | 52 | #include "configdlg.h" |
53 | 53 | ||
54 | extern QString addressbookPersonalVCardName(); | 54 | extern QString addressbookPersonalVCardName(); |
55 | 55 | ||
56 | AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, | 56 | AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name, |
57 | WFlags f ) | 57 | WFlags f ) |
58 | : QMainWindow( parent, name, f ), | 58 | : QMainWindow( parent, name, f ), |
59 | catMenu (0l), | 59 | catMenu (0l), |
60 | abEditor(0l), | 60 | abEditor(0l), |
61 | syncing(FALSE), | 61 | syncing(FALSE), |
62 | m_tableViewButton(0l), | 62 | m_tableViewButton(0l), |
63 | m_cardViewButton(0l) | 63 | m_cardViewButton(0l) |
64 | { | 64 | { |
65 | isLoading = true; | 65 | isLoading = true; |
66 | 66 | ||
67 | m_config.load(); | 67 | m_config.load(); |
68 | 68 | ||
69 | setCaption( tr("Contacts") ); | 69 | setCaption( tr("Contacts") ); |
70 | setIcon( Resource::loadPixmap( "AddressBook" ) ); | 70 | setIcon( Resource::loadPixmap( "AddressBook" ) ); |
71 | 71 | ||
72 | // Settings for Main Menu | 72 | // Settings for Main Menu |
73 | // setToolBarsMovable( false ); | 73 | // setToolBarsMovable( false ); |
74 | setToolBarsMovable( !m_config.fixedBars() ); | 74 | setToolBarsMovable( !m_config.fixedBars() ); |
75 | setRightJustification( true ); | 75 | setRightJustification( true ); |
76 | 76 | ||
77 | QToolBar *bar = new QToolBar( this ); | 77 | QToolBar *bar = new QToolBar( this ); |
78 | bar->setHorizontalStretchable( TRUE ); | 78 | bar->setHorizontalStretchable( TRUE ); |
79 | 79 | ||
80 | QMenuBar *mbList = new QMenuBar( bar ); | 80 | QMenuBar *mbList = new QMenuBar( bar ); |
81 | mbList->setMargin( 0 ); | 81 | mbList->setMargin( 0 ); |
82 | 82 | ||
83 | QPopupMenu *edit = new QPopupMenu( mbList ); | 83 | QPopupMenu *edit = new QPopupMenu( mbList ); |
84 | mbList->insertItem( tr( "Contact" ), edit ); | 84 | mbList->insertItem( tr( "Contact" ), edit ); |
85 | 85 | ||
86 | // Category Menu | 86 | // Category Menu |
87 | catMenu = new QPopupMenu( this ); | 87 | catMenu = new QPopupMenu( this ); |
88 | catMenu->setCheckable( TRUE ); | 88 | catMenu->setCheckable( TRUE ); |
89 | connect( catMenu, SIGNAL(activated(int)), this, SLOT(slotSetCategory(int)) ); | 89 | connect( catMenu, SIGNAL(activated(int)), this, SLOT(slotSetCategory(int)) ); |
90 | mbList->insertItem( tr("View"), catMenu ); | 90 | mbList->insertItem( tr("View"), catMenu ); |
91 | 91 | ||
92 | // Create Toolbar | 92 | // Create Toolbar |
93 | listTools = new QToolBar( this, "list operations" ); | 93 | listTools = new QToolBar( this, "list operations" ); |
94 | listTools->setHorizontalStretchable( true ); | 94 | listTools->setHorizontalStretchable( true ); |
95 | addToolBar( listTools ); | 95 | addToolBar( listTools ); |
96 | moveToolBar( listTools, m_config.getToolBarPos() ); | 96 | moveToolBar( listTools, m_config.getToolBarPos() ); |
97 | 97 | ||
98 | // View Icons | 98 | // View Icons |
99 | m_tableViewButton = new QAction( tr( "List" ), Resource::loadPixmap( "addressbook/listview" ), | 99 | m_tableViewButton = new QAction( tr( "List" ), Resource::loadPixmap( "addressbook/listview" ), |
100 | QString::null, 0, this, 0 ); | 100 | QString::null, 0, this, 0 ); |
101 | connect( m_tableViewButton, SIGNAL( activated() ), this, SLOT( slotListView() ) ); | 101 | connect( m_tableViewButton, SIGNAL( activated() ), this, SLOT( slotListView() ) ); |
102 | m_tableViewButton->setToggleAction( true ); | 102 | m_tableViewButton->setToggleAction( true ); |
103 | m_tableViewButton->addTo( listTools ); | 103 | m_tableViewButton->addTo( listTools ); |
104 | m_cardViewButton = new QAction( tr( "Card" ), Resource::loadPixmap( "addressbook/cardview" ), QString::null, 0, this, 0 ); | 104 | m_cardViewButton = new QAction( tr( "Card" ), Resource::loadPixmap( "addressbook/cardview" ), QString::null, 0, this, 0 ); |
105 | connect( m_cardViewButton, SIGNAL( activated() ), this, SLOT( slotCardView() ) ); | 105 | connect( m_cardViewButton, SIGNAL( activated() ), this, SLOT( slotCardView() ) ); |
106 | m_cardViewButton->setToggleAction( true ); | 106 | m_cardViewButton->setToggleAction( true ); |
107 | m_cardViewButton->addTo( listTools ); | 107 | m_cardViewButton->addTo( listTools ); |
108 | 108 | ||
109 | listTools->addSeparator(); | 109 | listTools->addSeparator(); |
110 | 110 | ||
111 | // Other Buttons | 111 | // Other Buttons |
112 | QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, | 112 | QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, |
113 | 0, this, 0 ); | 113 | 0, this, 0 ); |
114 | actionNew = a; | 114 | actionNew = a; |
115 | connect( a, SIGNAL( activated() ), this, SLOT( slotListNew() ) ); | 115 | connect( a, SIGNAL( activated() ), this, SLOT( slotListNew() ) ); |
116 | a->addTo( edit ); | 116 | a->addTo( edit ); |
117 | a->addTo( listTools ); | 117 | a->addTo( listTools ); |
118 | 118 | ||
119 | a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ), QString::null, | 119 | a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ), QString::null, |
120 | 0, this, 0 ); | 120 | 0, this, 0 ); |
121 | actionEdit = a; | 121 | actionEdit = a; |
122 | connect( a, SIGNAL( activated() ), this, SLOT( slotViewEdit() ) ); | 122 | connect( a, SIGNAL( activated() ), this, SLOT( slotViewEdit() ) ); |
123 | a->addTo( edit ); | 123 | a->addTo( edit ); |
124 | a->addTo( listTools ); | 124 | a->addTo( listTools ); |
125 | 125 | ||
126 | a = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, | 126 | a = new QAction( tr( "Delete" ), Resource::loadPixmap( "trash" ), QString::null, |
127 | 0, this, 0 ); | 127 | 0, this, 0 ); |
128 | actionTrash = a; | 128 | actionTrash = a; |
129 | connect( a, SIGNAL( activated() ), this, SLOT( slotListDelete() ) ); | 129 | connect( a, SIGNAL( activated() ), this, SLOT( slotListDelete() ) ); |
130 | a->addTo( edit ); | 130 | a->addTo( edit ); |
131 | a->addTo( listTools ); | 131 | a->addTo( listTools ); |
132 | 132 | ||
133 | 133 | ||
134 | // make it possible to go directly to businesscard via qcop call | 134 | // make it possible to go directly to businesscard via qcop call |
135 | //#if defined(Q_WS_QWS) // Why this ? (se) | 135 | //#if defined(Q_WS_QWS) // Why this ? (se) |
136 | #if !defined(QT_NO_COP) | 136 | #if !defined(QT_NO_COP) |
137 | QCopChannel *addressChannel = new QCopChannel("QPE/Addressbook" , this ); | 137 | QCopChannel *addressChannel = new QCopChannel("QPE/Addressbook" , this ); |
138 | connect (addressChannel, SIGNAL( received(const QCString &, const QByteArray &)), | 138 | connect (addressChannel, SIGNAL( received(const QCString&,const QByteArray&)), |
139 | this, SLOT ( appMessage(const QCString &, const QByteArray &) ) ); | 139 | this, SLOT ( appMessage(const QCString&,const QByteArray&) ) ); |
140 | #endif | 140 | #endif |
141 | // #endif | 141 | // #endif |
142 | a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ), | 142 | a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ), |
143 | QString::null, 0, this, 0 ); | 143 | QString::null, 0, this, 0 ); |
144 | actionFind = a; | 144 | actionFind = a; |
145 | connect( a, SIGNAL(activated()), this, SLOT( slotFindOpen()) ); | 145 | connect( a, SIGNAL(activated()), this, SLOT( slotFindOpen()) ); |
146 | a->addTo( edit ); | 146 | a->addTo( edit ); |
147 | a->addTo( listTools ); | 147 | a->addTo( listTools ); |
148 | 148 | ||
149 | // Much better search widget, taken from QTReader.. (se) | 149 | // Much better search widget, taken from QTReader.. (se) |
150 | searchBar = new OFloatBar( "Search", this, QMainWindow::Top, TRUE ); | 150 | searchBar = new OFloatBar( "Search", this, QMainWindow::Top, TRUE ); |
151 | searchBar->setHorizontalStretchable( TRUE ); | 151 | searchBar->setHorizontalStretchable( TRUE ); |
152 | searchBar->hide(); | 152 | searchBar->hide(); |
153 | searchEdit = new QLineEdit( searchBar, "searchEdit" ); | 153 | searchEdit = new QLineEdit( searchBar, "searchEdit" ); |
154 | 154 | ||
155 | // QFont f("unifont", 16 /*, QFont::Bold*/); | 155 | // QFont f("unifont", 16 /*, QFont::Bold*/); |
156 | // searchEdit->setFont( f ); | 156 | // searchEdit->setFont( f ); |
157 | 157 | ||
158 | searchBar->setStretchableWidget( searchEdit ); | 158 | searchBar->setStretchableWidget( searchEdit ); |
159 | connect( searchEdit, SIGNAL( returnPressed( ) ), | 159 | connect( searchEdit, SIGNAL( returnPressed() ), |
160 | this, SLOT( slotFind( ) ) ); | 160 | this, SLOT( slotFind() ) ); |
161 | 161 | ||
162 | a = new QAction( tr( "Start Search" ), Resource::loadPixmap( "enter" ), QString::null, 0, this, 0 ); | 162 | a = new QAction( tr( "Start Search" ), Resource::loadPixmap( "enter" ), QString::null, 0, this, 0 ); |
163 | connect( a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); | 163 | connect( a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); |
164 | a->addTo( searchBar ); | 164 | a->addTo( searchBar ); |
165 | 165 | ||
166 | a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); | 166 | a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); |
167 | connect( a, SIGNAL( activated() ), this, SLOT( slotFindClose() ) ); | 167 | connect( a, SIGNAL( activated() ), this, SLOT( slotFindClose() ) ); |
168 | a->addTo( searchBar ); | 168 | a->addTo( searchBar ); |
169 | 169 | ||
170 | a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "addressbook/sendmail" ), | 170 | a = new QAction( tr( "Write Mail To" ), Resource::loadPixmap( "addressbook/sendmail" ), |
171 | QString::null, 0, this, 0 ); | 171 | QString::null, 0, this, 0 ); |
172 | //a->setEnabled( FALSE ); we got support for it now :) zecke | 172 | //a->setEnabled( FALSE ); we got support for it now :) zecke |
173 | actionMail = a; | 173 | actionMail = a; |
174 | connect( a, SIGNAL( activated() ), this, SLOT( writeMail() ) ); | 174 | connect( a, SIGNAL( activated() ), this, SLOT( writeMail() ) ); |
175 | a->addTo( edit ); | 175 | a->addTo( edit ); |
176 | a->addTo( listTools ); | 176 | a->addTo( listTools ); |
177 | 177 | ||
178 | if ( Ir::supported() ) { | 178 | if ( Ir::supported() ) { |
179 | a = new QAction( tr ("Beam Entry" ), Resource::loadPixmap( "beam" ), QString::null, | 179 | a = new QAction( tr ("Beam Entry" ), Resource::loadPixmap( "beam" ), QString::null, |
180 | 0, this, 0 ); | 180 | 0, this, 0 ); |
181 | actionBeam = a; | 181 | actionBeam = a; |
182 | connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); | 182 | connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); |
183 | a->addTo( edit ); | 183 | a->addTo( edit ); |
184 | a->addTo( listTools ); | 184 | a->addTo( listTools ); |
185 | } | 185 | } |
186 | 186 | ||
187 | edit->insertSeparator(); | 187 | edit->insertSeparator(); |
188 | 188 | ||
189 | a = new QAction( tr("Import vCard"), Resource::loadPixmap( "addressbook/fileimport"), QString::null, | 189 | a = new QAction( tr("Import vCard"), Resource::loadPixmap( "addressbook/fileimport"), QString::null, |
190 | 0, this, 0); | 190 | 0, this, 0); |
191 | actionPersonal = a; | 191 | actionPersonal = a; |
192 | connect( a, SIGNAL( activated() ), this, SLOT( importvCard() ) ); | 192 | connect( a, SIGNAL( activated() ), this, SLOT( importvCard() ) ); |
193 | a->addTo( edit ); | 193 | a->addTo( edit ); |
194 | 194 | ||
195 | a = new QAction( tr("Export vCard"), Resource::loadPixmap( "addressbook/fileexport"), QString::null, | 195 | a = new QAction( tr("Export vCard"), Resource::loadPixmap( "addressbook/fileexport"), QString::null, |
196 | 0, this, 0); | 196 | 0, this, 0); |
197 | actionPersonal = a; | 197 | actionPersonal = a; |
198 | connect( a, SIGNAL( activated() ), this, SLOT( exportvCard() ) ); | 198 | connect( a, SIGNAL( activated() ), this, SLOT( exportvCard() ) ); |
199 | a->addTo( edit ); | 199 | a->addTo( edit ); |
200 | 200 | ||
201 | edit->insertSeparator(); | 201 | edit->insertSeparator(); |
202 | 202 | ||
203 | a = new QAction( tr("My Personal Details"), Resource::loadPixmap( "addressbook/identity" ), | 203 | a = new QAction( tr("My Personal Details"), Resource::loadPixmap( "addressbook/identity" ), |
204 | QString::null, 0, this, 0 , TRUE ); | 204 | QString::null, 0, this, 0 , TRUE ); |
205 | actionPersonal = a; | 205 | actionPersonal = a; |
206 | connect( a, SIGNAL( activated() ), this, SLOT( slotPersonalView() ) ); | 206 | connect( a, SIGNAL( activated() ), this, SLOT( slotPersonalView() ) ); |
207 | a->addTo( edit ); | 207 | a->addTo( edit ); |
208 | 208 | ||
209 | 209 | ||
210 | #ifdef __DEBUG_RELEASE | 210 | #ifdef __DEBUG_RELEASE |
211 | // Remove this function for public Release ! This is only | 211 | // Remove this function for public Release ! This is only |
212 | // for debug purposes .. | 212 | // for debug purposes .. |
213 | a = new QAction( tr( "Save all Data"), QString::null, 0, 0 ); | 213 | a = new QAction( tr( "Save all Data"), QString::null, 0, 0 ); |
214 | connect( a, SIGNAL( activated() ), this , SLOT( slotSave() ) ); | 214 | connect( a, SIGNAL( activated() ), this , SLOT( slotSave() ) ); |
215 | a->addTo( edit ); | 215 | a->addTo( edit ); |
216 | #endif | 216 | #endif |
217 | a = new QAction( tr( "Config" ), Resource::loadPixmap( "SettingsIcon" ), QString::null, | 217 | a = new QAction( tr( "Config" ), Resource::loadPixmap( "SettingsIcon" ), QString::null, |
218 | 0, this, 0 ); | 218 | 0, this, 0 ); |
219 | connect( a, SIGNAL( activated() ), this, SLOT( slotConfig() ) ); | 219 | connect( a, SIGNAL( activated() ), this, SLOT( slotConfig() ) ); |
220 | a->addTo( edit ); | 220 | a->addTo( edit ); |
221 | 221 | ||
222 | // Create Views | 222 | // Create Views |
223 | listContainer = new QWidget( this ); | 223 | listContainer = new QWidget( this ); |
224 | QVBoxLayout *vb = new QVBoxLayout( listContainer ); | 224 | QVBoxLayout *vb = new QVBoxLayout( listContainer ); |
225 | 225 | ||
226 | m_abView = new AbView( listContainer, m_config.orderList() ); | 226 | m_abView = new AbView( listContainer, m_config.orderList() ); |
227 | vb->addWidget( m_abView ); | 227 | vb->addWidget( m_abView ); |
228 | // abList->setHScrollBarMode( QScrollView::AlwaysOff ); | 228 | // abList->setHScrollBarMode( QScrollView::AlwaysOff ); |
229 | connect( m_abView, SIGNAL( signalViewSwitched ( int ) ), | 229 | connect( m_abView, SIGNAL( signalViewSwitched(int) ), |
230 | this, SLOT( slotViewSwitched( int ) ) ); | 230 | this, SLOT( slotViewSwitched(int) ) ); |
231 | 231 | ||
232 | 232 | ||
233 | QObject::connect( m_abView, SIGNAL(signalNotFound()), this, SLOT(slotNotFound()) ); | 233 | QObject::connect( m_abView, SIGNAL(signalNotFound()), this, SLOT(slotNotFound()) ); |
234 | 234 | ||
235 | // m_abView->load(); // Already done by c'tor . | 235 | // m_abView->load(); // Already done by c'tor . |
236 | 236 | ||
237 | // Letter Picker | 237 | // Letter Picker |
238 | pLabel = new LetterPicker( listContainer ); | 238 | pLabel = new LetterPicker( listContainer ); |
239 | connect(pLabel, SIGNAL(letterClicked(char)), this, SLOT(slotSetLetter(char))); | 239 | connect(pLabel, SIGNAL(letterClicked(char)), this, SLOT(slotSetLetter(char))); |
240 | connect(m_abView, SIGNAL( signalClearLetterPicker() ), pLabel, SLOT( clear() ) ); | 240 | connect(m_abView, SIGNAL( signalClearLetterPicker() ), pLabel, SLOT( clear() ) ); |
241 | 241 | ||
242 | vb->addWidget( pLabel ); | 242 | vb->addWidget( pLabel ); |
243 | 243 | ||
244 | // All Categories into view-menu.. | 244 | // All Categories into view-menu.. |
245 | populateCategories(); | 245 | populateCategories(); |
246 | 246 | ||
247 | // Fontsize | 247 | // Fontsize |
248 | defaultFont = new QFont( m_abView->font() ); | 248 | defaultFont = new QFont( m_abView->font() ); |
249 | slotSetFont(m_config.fontSize()); | 249 | slotSetFont(m_config.fontSize()); |
250 | m_curFontSize = m_config.fontSize(); | 250 | m_curFontSize = m_config.fontSize(); |
251 | 251 | ||
252 | setCentralWidget(listContainer); | 252 | setCentralWidget(listContainer); |
253 | 253 | ||
254 | // qDebug("adressbook contrsuction: t=%d", t.elapsed() ); | 254 | // qDebug("adressbook contrsuction: t=%d", t.elapsed() ); |
255 | connect( qApp, SIGNAL( flush() ), this, SLOT( flush() ) ); | 255 | connect( qApp, SIGNAL( flush() ), this, SLOT( flush() ) ); |
256 | connect( qApp, SIGNAL( reload() ), this, SLOT( reload() ) ); | 256 | connect( qApp, SIGNAL( reload() ), this, SLOT( reload() ) ); |
257 | connect( qApp, SIGNAL( appMessage(const QCString &, const QByteArray &) ), | 257 | connect( qApp, SIGNAL( appMessage(const QCString&,const QByteArray&) ), |
258 | this, SLOT( appMessage(const QCString &, const QByteArray &) ) ); | 258 | this, SLOT( appMessage(const QCString&,const QByteArray&) ) ); |
259 | 259 | ||
260 | 260 | ||
261 | isLoading = false; | 261 | isLoading = false; |
262 | } | 262 | } |
263 | 263 | ||
264 | 264 | ||
265 | void AddressbookWindow::slotConfig() | 265 | void AddressbookWindow::slotConfig() |
266 | { | 266 | { |
267 | ConfigDlg* dlg = new ConfigDlg( this, "Config" ); | 267 | ConfigDlg* dlg = new ConfigDlg( this, "Config" ); |
268 | dlg -> setConfig( m_config ); | 268 | dlg -> setConfig( m_config ); |
269 | if ( QPEApplication::execDialog( dlg ) ) { | 269 | if ( QPEApplication::execDialog( dlg ) ) { |
270 | qWarning ("Config Dialog accepted!"); | 270 | qWarning ("Config Dialog accepted!"); |
271 | m_config = dlg -> getConfig(); | 271 | m_config = dlg -> getConfig(); |
272 | if ( m_curFontSize != m_config.fontSize() ){ | 272 | if ( m_curFontSize != m_config.fontSize() ){ |
273 | qWarning("Font was changed!"); | 273 | qWarning("Font was changed!"); |
274 | m_curFontSize = m_config.fontSize(); | 274 | m_curFontSize = m_config.fontSize(); |
275 | emit slotSetFont( m_curFontSize ); | 275 | emit slotSetFont( m_curFontSize ); |
276 | } | 276 | } |
277 | m_abView -> setListOrder( m_config.orderList() ); | 277 | m_abView -> setListOrder( m_config.orderList() ); |
278 | } | 278 | } |
279 | 279 | ||
280 | delete dlg; | 280 | delete dlg; |
281 | } | 281 | } |
282 | 282 | ||
283 | 283 | ||
284 | void AddressbookWindow::slotSetFont( int size ) | 284 | void AddressbookWindow::slotSetFont( int size ) |
285 | { | 285 | { |
286 | qWarning("void AddressbookWindow::slotSetFont( %d )", size); | 286 | qWarning("void AddressbookWindow::slotSetFont( %d )", size); |
287 | 287 | ||
288 | if (size > 2 || size < 0) | 288 | if (size > 2 || size < 0) |
289 | size = 1; | 289 | size = 1; |
290 | 290 | ||
291 | m_config.setFontSize( size ); | 291 | m_config.setFontSize( size ); |
292 | 292 | ||
293 | QFont *currentFont; | 293 | QFont *currentFont; |
294 | 294 | ||
295 | switch (size) { | 295 | switch (size) { |
296 | case 0: | 296 | case 0: |
297 | m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) ); | 297 | m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) ); |
298 | currentFont = new QFont (m_abView->font()); | 298 | currentFont = new QFont (m_abView->font()); |
299 | // abList->resizeRows(currentFont->pixelSize() + 7); :SX | 299 | // abList->resizeRows(currentFont->pixelSize() + 7); :SX |
300 | // abList->resizeRows(); | 300 | // abList->resizeRows(); |
301 | break; | 301 | break; |
302 | case 1: | 302 | case 1: |
303 | m_abView->setFont( *defaultFont ); | 303 | m_abView->setFont( *defaultFont ); |
304 | currentFont = new QFont (m_abView->font()); | 304 | currentFont = new QFont (m_abView->font()); |
305 | // // abList->resizeRows(currentFont->pixelSize() + 7); | 305 | // // abList->resizeRows(currentFont->pixelSize() + 7); |
306 | // abList->resizeRows(); | 306 | // abList->resizeRows(); |
307 | break; | 307 | break; |
308 | case 2: | 308 | case 2: |
309 | m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) ); | 309 | m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) ); |
310 | currentFont = new QFont (m_abView->font()); | 310 | currentFont = new QFont (m_abView->font()); |
311 | // //abList->resizeRows(currentFont->pixelSize() + 7); | 311 | // //abList->resizeRows(currentFont->pixelSize() + 7); |
312 | // abList->resizeRows(); | 312 | // abList->resizeRows(); |
313 | break; | 313 | break; |
314 | } | 314 | } |
315 | } | 315 | } |
316 | 316 | ||
317 | 317 | ||
318 | 318 | ||
319 | void AddressbookWindow::importvCard() { | 319 | void AddressbookWindow::importvCard() { |
320 | QString str = OFileDialog::getOpenFileName( 1,"/");//,"", "*", this ); | 320 | QString str = OFileDialog::getOpenFileName( 1,"/");//,"", "*", this ); |
321 | if(!str.isEmpty() ){ | 321 | if(!str.isEmpty() ){ |
322 | setDocument((const QString&) str ); | 322 | setDocument((const QString&) str ); |
323 | } | 323 | } |
324 | 324 | ||
325 | } | 325 | } |
326 | void AddressbookWindow::exportvCard() | 326 | void AddressbookWindow::exportvCard() |
327 | { | 327 | { |
328 | qWarning(" void AddressbookWindow::exportvCard()"); | 328 | qWarning(" void AddressbookWindow::exportvCard()"); |
329 | QString filename = OFileDialog::getSaveFileName( 1,"/home/"); //,"", "*", this ); | 329 | QString filename = OFileDialog::getSaveFileName( 1,"/home/"); //,"", "*", this ); |
330 | if( !filename.isEmpty() && ( filename[filename.length()-1] != '/' ) ){ | 330 | if( !filename.isEmpty() && ( filename[filename.length()-1] != '/' ) ){ |
331 | qWarning(" Save to file %s, (%d)", filename.latin1(), filename.length()-1 ); | 331 | qWarning(" Save to file %s, (%d)", filename.latin1(), filename.length()-1 ); |
332 | OContact curCont = m_abView->currentEntry(); | 332 | OContact curCont = m_abView->currentEntry(); |
333 | if ( !curCont.isEmpty() ){ | 333 | if ( !curCont.isEmpty() ){ |
334 | OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, | 334 | OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, |
335 | filename ); | 335 | filename ); |
336 | OContactAccess* access = new OContactAccess ( "addressbook_exp", QString::null , vcard_backend, true ); | 336 | OContactAccess* access = new OContactAccess ( "addressbook_exp", QString::null , vcard_backend, true ); |
337 | if ( access ){ | 337 | if ( access ){ |
338 | access->add( curCont ); | 338 | access->add( curCont ); |
339 | access->save(); | 339 | access->save(); |
340 | } | 340 | } |
341 | delete access; | 341 | delete access; |
342 | }else | 342 | }else |
343 | QMessageBox::critical( 0, "Export VCard", | 343 | QMessageBox::critical( 0, "Export VCard", |
344 | QString( tr( "You have to select a contact !") ) ); | 344 | QString( tr( "You have to select a contact !") ) ); |
345 | 345 | ||
346 | }else | 346 | }else |
347 | QMessageBox::critical( 0, "Export VCard", | 347 | QMessageBox::critical( 0, "Export VCard", |
348 | QString( tr( "You have to set a filename !") ) ); | 348 | QString( tr( "You have to set a filename !") ) ); |
349 | } | 349 | } |
350 | 350 | ||
351 | void AddressbookWindow::setDocument( const QString &filename ) | 351 | void AddressbookWindow::setDocument( const QString &filename ) |
352 | { | 352 | { |
353 | qWarning( "void AddressbookWindow::setDocument( %s )", filename.latin1() ); | 353 | qWarning( "void AddressbookWindow::setDocument( %s )", filename.latin1() ); |
354 | 354 | ||
@@ -502,271 +502,271 @@ void AddressbookWindow::slotFind() | |||
502 | 502 | ||
503 | } | 503 | } |
504 | 504 | ||
505 | void AddressbookWindow::slotViewBack() | 505 | void AddressbookWindow::slotViewBack() |
506 | { | 506 | { |
507 | // :SX showList(); | 507 | // :SX showList(); |
508 | } | 508 | } |
509 | 509 | ||
510 | void AddressbookWindow::slotViewEdit() | 510 | void AddressbookWindow::slotViewEdit() |
511 | { | 511 | { |
512 | if(!syncing) { | 512 | if(!syncing) { |
513 | if (actionPersonal->isOn()) { | 513 | if (actionPersonal->isOn()) { |
514 | editPersonal(); | 514 | editPersonal(); |
515 | } else { | 515 | } else { |
516 | editEntry( EditEntry ); | 516 | editEntry( EditEntry ); |
517 | } | 517 | } |
518 | } else { | 518 | } else { |
519 | QMessageBox::warning( this, tr("Contacts"), | 519 | QMessageBox::warning( this, tr("Contacts"), |
520 | tr("Can not edit data, currently syncing") ); | 520 | tr("Can not edit data, currently syncing") ); |
521 | } | 521 | } |
522 | } | 522 | } |
523 | 523 | ||
524 | 524 | ||
525 | 525 | ||
526 | void AddressbookWindow::writeMail() | 526 | void AddressbookWindow::writeMail() |
527 | { | 527 | { |
528 | OContact c = m_abView -> currentEntry(); | 528 | OContact c = m_abView -> currentEntry(); |
529 | QString name = c.fileAs(); | 529 | QString name = c.fileAs(); |
530 | QString email = c.defaultEmail(); | 530 | QString email = c.defaultEmail(); |
531 | 531 | ||
532 | // I prefer the OPIE-Environment variable before the | 532 | // I prefer the OPIE-Environment variable before the |
533 | // QPE-one.. | 533 | // QPE-one.. |
534 | QString basepath = QString::fromLatin1( getenv("OPIEDIR") ); | 534 | QString basepath = QString::fromLatin1( getenv("OPIEDIR") ); |
535 | if ( basepath.isEmpty() ) | 535 | if ( basepath.isEmpty() ) |
536 | basepath = QString::fromLatin1( getenv("QPEDIR") ); | 536 | basepath = QString::fromLatin1( getenv("QPEDIR") ); |
537 | 537 | ||
538 | // Try to access the preferred. If not possible, try to | 538 | // Try to access the preferred. If not possible, try to |
539 | // switch to the other one.. | 539 | // switch to the other one.. |
540 | if ( m_config.useQtMail() ){ | 540 | if ( m_config.useQtMail() ){ |
541 | qWarning ("Accessing: %s", (basepath + "/bin/qtmail").latin1()); | 541 | qWarning ("Accessing: %s", (basepath + "/bin/qtmail").latin1()); |
542 | if ( QFile::exists( basepath + "/bin/qtmail" ) ){ | 542 | if ( QFile::exists( basepath + "/bin/qtmail" ) ){ |
543 | qWarning ("QCop"); | 543 | qWarning ("QCop"); |
544 | QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)"); | 544 | QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)"); |
545 | e << name << email; | 545 | e << name << email; |
546 | return; | 546 | return; |
547 | } else | 547 | } else |
548 | m_config.setUseOpieMail( true ); | 548 | m_config.setUseOpieMail( true ); |
549 | } | 549 | } |
550 | if ( m_config.useOpieMail() ){ | 550 | if ( m_config.useOpieMail() ){ |
551 | qWarning ("Accessing: %s", (basepath + "/bin/opiemail").latin1()); | 551 | qWarning ("Accessing: %s", (basepath + "/bin/opiemail").latin1()); |
552 | if ( QFile::exists( basepath + "/bin/opiemail" ) ){ | 552 | if ( QFile::exists( basepath + "/bin/opiemail" ) ){ |
553 | qWarning ("QCop"); | 553 | qWarning ("QCop"); |
554 | QCopEnvelope e("QPE/Application/opiemail", "writeMail(QString,QString)"); | 554 | QCopEnvelope e("QPE/Application/opiemail", "writeMail(QString,QString)"); |
555 | e << name << email; | 555 | e << name << email; |
556 | return; | 556 | return; |
557 | } else | 557 | } else |
558 | m_config.setUseQtMail( true ); | 558 | m_config.setUseQtMail( true ); |
559 | } | 559 | } |
560 | 560 | ||
561 | } | 561 | } |
562 | 562 | ||
563 | static const char * beamfile = "/tmp/obex/contact.vcf"; | 563 | static const char * beamfile = "/tmp/obex/contact.vcf"; |
564 | 564 | ||
565 | void AddressbookWindow::slotBeam() | 565 | void AddressbookWindow::slotBeam() |
566 | { | 566 | { |
567 | QString beamFilename; | 567 | QString beamFilename; |
568 | OContact c; | 568 | OContact c; |
569 | if ( actionPersonal->isOn() ) { | 569 | if ( actionPersonal->isOn() ) { |
570 | beamFilename = addressbookPersonalVCardName(); | 570 | beamFilename = addressbookPersonalVCardName(); |
571 | if ( !QFile::exists( beamFilename ) ) | 571 | if ( !QFile::exists( beamFilename ) ) |
572 | return; // can't beam a non-existent file | 572 | return; // can't beam a non-existent file |
573 | OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, | 573 | OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, |
574 | beamFilename ); | 574 | beamFilename ); |
575 | OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); | 575 | OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); |
576 | OContactAccess::List allList = access->allRecords(); | 576 | OContactAccess::List allList = access->allRecords(); |
577 | OContactAccess::List::Iterator it = allList.begin(); // Just take first | 577 | OContactAccess::List::Iterator it = allList.begin(); // Just take first |
578 | c = *it; | 578 | c = *it; |
579 | 579 | ||
580 | delete access; | 580 | delete access; |
581 | } else { | 581 | } else { |
582 | unlink( beamfile ); // delete if exists | 582 | unlink( beamfile ); // delete if exists |
583 | mkdir("/tmp/obex/", 0755); | 583 | mkdir("/tmp/obex/", 0755); |
584 | c = m_abView -> currentEntry(); | 584 | c = m_abView -> currentEntry(); |
585 | OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, | 585 | OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, |
586 | beamfile ); | 586 | beamfile ); |
587 | OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); | 587 | OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); |
588 | access->add( c ); | 588 | access->add( c ); |
589 | access->save(); | 589 | access->save(); |
590 | delete access; | 590 | delete access; |
591 | 591 | ||
592 | beamFilename = beamfile; | 592 | beamFilename = beamfile; |
593 | } | 593 | } |
594 | 594 | ||
595 | qWarning("Beaming: %s", beamFilename.latin1() ); | 595 | qWarning("Beaming: %s", beamFilename.latin1() ); |
596 | 596 | ||
597 | Ir *ir = new Ir( this ); | 597 | Ir *ir = new Ir( this ); |
598 | connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); | 598 | connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); |
599 | QString description = c.fullName(); | 599 | QString description = c.fullName(); |
600 | ir->send( beamFilename, description, "text/x-vCard" ); | 600 | ir->send( beamFilename, description, "text/x-vCard" ); |
601 | } | 601 | } |
602 | 602 | ||
603 | void AddressbookWindow::beamDone( Ir *ir ) | 603 | void AddressbookWindow::beamDone( Ir *ir ) |
604 | { | 604 | { |
605 | 605 | ||
606 | delete ir; | 606 | delete ir; |
607 | unlink( beamfile ); | 607 | unlink( beamfile ); |
608 | } | 608 | } |
609 | 609 | ||
610 | 610 | ||
611 | static void parseName( const QString& name, QString *first, QString *middle, | 611 | static void parseName( const QString& name, QString *first, QString *middle, |
612 | QString * last ) | 612 | QString * last ) |
613 | { | 613 | { |
614 | 614 | ||
615 | int comma = name.find ( "," ); | 615 | int comma = name.find ( "," ); |
616 | QString rest; | 616 | QString rest; |
617 | if ( comma > 0 ) { | 617 | if ( comma > 0 ) { |
618 | *last = name.left( comma ); | 618 | *last = name.left( comma ); |
619 | comma++; | 619 | comma++; |
620 | while ( comma < int(name.length()) && name[comma] == ' ' ) | 620 | while ( comma < int(name.length()) && name[comma] == ' ' ) |
621 | comma++; | 621 | comma++; |
622 | rest = name.mid( comma ); | 622 | rest = name.mid( comma ); |
623 | } else { | 623 | } else { |
624 | int space = name.findRev( ' ' ); | 624 | int space = name.findRev( ' ' ); |
625 | *last = name.mid( space+1 ); | 625 | *last = name.mid( space+1 ); |
626 | rest = name.left( space ); | 626 | rest = name.left( space ); |
627 | } | 627 | } |
628 | int space = rest.find( ' ' ); | 628 | int space = rest.find( ' ' ); |
629 | if ( space <= 0 ) { | 629 | if ( space <= 0 ) { |
630 | *first = rest; | 630 | *first = rest; |
631 | } else { | 631 | } else { |
632 | *first = rest.left( space ); | 632 | *first = rest.left( space ); |
633 | *middle = rest.mid( space+1 ); | 633 | *middle = rest.mid( space+1 ); |
634 | } | 634 | } |
635 | 635 | ||
636 | } | 636 | } |
637 | 637 | ||
638 | 638 | ||
639 | void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) | 639 | void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) |
640 | { | 640 | { |
641 | bool needShow = FALSE; | 641 | bool needShow = FALSE; |
642 | qWarning("Receiving QCop-Call with message %s", QString( msg ).latin1() ); | 642 | qWarning("Receiving QCop-Call with message %s", QString( msg ).latin1() ); |
643 | 643 | ||
644 | 644 | ||
645 | if (msg == "editPersonal()") { | 645 | if (msg == "editPersonal()") { |
646 | editPersonal(); | 646 | editPersonal(); |
647 | } else if (msg == "editPersonalAndClose()") { | 647 | } else if (msg == "editPersonalAndClose()") { |
648 | editPersonal(); | 648 | editPersonal(); |
649 | close(); | 649 | close(); |
650 | } else if ( msg == "addContact(QString,QString)" ) { | 650 | } else if ( msg == "addContact(QString,QString)" ) { |
651 | QDataStream stream(data,IO_ReadOnly); | 651 | QDataStream stream(data,IO_ReadOnly); |
652 | QString name, email; | 652 | QString name, email; |
653 | stream >> name >> email; | 653 | stream >> name >> email; |
654 | 654 | ||
655 | OContact cnt; | 655 | OContact cnt; |
656 | QString fn, mn, ln; | 656 | QString fn, mn, ln; |
657 | parseName( name, &fn, &mn, &ln ); | 657 | parseName( name, &fn, &mn, &ln ); |
658 | // qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() ); | 658 | // qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() ); |
659 | cnt.setFirstName( fn ); | 659 | cnt.setFirstName( fn ); |
660 | cnt.setMiddleName( mn ); | 660 | cnt.setMiddleName( mn ); |
661 | cnt.setLastName( ln ); | 661 | cnt.setLastName( ln ); |
662 | cnt.insertEmails( email ); | 662 | cnt.insertEmails( email ); |
663 | cnt.setDefaultEmail( email ); | 663 | cnt.setDefaultEmail( email ); |
664 | cnt.setFileAs(); | 664 | cnt.setFileAs(); |
665 | 665 | ||
666 | m_abView -> addEntry( cnt ); | 666 | m_abView -> addEntry( cnt ); |
667 | 667 | ||
668 | // :SXm_abView()->init( cnt ); | 668 | // :SXm_abView()->init( cnt ); |
669 | editEntry( EditEntry ); | 669 | editEntry( EditEntry ); |
670 | } else if ( msg == "beamBusinessCard()" ) { | 670 | } else if ( msg == "beamBusinessCard()" ) { |
671 | QString beamFilename = addressbookPersonalVCardName(); | 671 | QString beamFilename = addressbookPersonalVCardName(); |
672 | if ( !QFile::exists( beamFilename ) ) | 672 | if ( !QFile::exists( beamFilename ) ) |
673 | return; // can't beam a non-existent file | 673 | return; // can't beam a non-existent file |
674 | 674 | ||
675 | Ir *ir = new Ir( this ); | 675 | Ir *ir = new Ir( this ); |
676 | connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); | 676 | connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); |
677 | QString description = "mycard.vcf"; | 677 | QString description = "mycard.vcf"; |
678 | ir->send( beamFilename, description, "text/x-vCard" ); | 678 | ir->send( beamFilename, description, "text/x-vCard" ); |
679 | } else if ( msg == "show(int)" ) { | 679 | } else if ( msg == "show(int)" ) { |
680 | raise(); | 680 | raise(); |
681 | QDataStream stream(data,IO_ReadOnly); | 681 | QDataStream stream(data,IO_ReadOnly); |
682 | int uid; | 682 | int uid; |
683 | stream >> uid; | 683 | stream >> uid; |
684 | 684 | ||
685 | qWarning( "Showing uid: %d" , uid ); | 685 | qWarning( "Showing uid: %d" , uid ); |
686 | 686 | ||
687 | // Deactivate Personal View.. | 687 | // Deactivate Personal View.. |
688 | if ( actionPersonal->isOn() ){ | 688 | if ( actionPersonal->isOn() ){ |
689 | actionPersonal->setOn( false ); | 689 | actionPersonal->setOn( false ); |
690 | slotPersonalView(); | 690 | slotPersonalView(); |
691 | } | 691 | } |
692 | 692 | ||
693 | // Reset category and show as card.. | 693 | // Reset category and show as card.. |
694 | m_abView -> setShowByCategory( QString::null ); | 694 | m_abView -> setShowByCategory( QString::null ); |
695 | m_abView -> setCurrentUid( uid ); | 695 | m_abView -> setCurrentUid( uid ); |
696 | slotViewSwitched ( AbView::CardView ); | 696 | slotViewSwitched ( AbView::CardView ); |
697 | 697 | ||
698 | needShow = true; | 698 | needShow = true; |
699 | 699 | ||
700 | 700 | ||
701 | } else if ( msg == "edit(int)" ) { | 701 | } else if ( msg == "edit(int)" ) { |
702 | QDataStream stream(data,IO_ReadOnly); | 702 | QDataStream stream(data,IO_ReadOnly); |
703 | int uid; | 703 | int uid; |
704 | stream >> uid; | 704 | stream >> uid; |
705 | 705 | ||
706 | // Deactivate Personal View.. | 706 | // Deactivate Personal View.. |
707 | if ( actionPersonal->isOn() ){ | 707 | if ( actionPersonal->isOn() ){ |
708 | actionPersonal->setOn( false ); | 708 | actionPersonal->setOn( false ); |
709 | slotPersonalView(); | 709 | slotPersonalView(); |
710 | } | 710 | } |
711 | 711 | ||
712 | // Reset category and edit.. | 712 | // Reset category and edit.. |
713 | m_abView -> setShowByCategory( QString::null ); | 713 | m_abView -> setShowByCategory( QString::null ); |
714 | m_abView -> setCurrentUid( uid ); | 714 | m_abView -> setCurrentUid( uid ); |
715 | slotViewEdit(); | 715 | slotViewEdit(); |
716 | } | 716 | } |
717 | 717 | ||
718 | if (needShow) | 718 | if (needShow) |
719 | QPEApplication::setKeepRunning(); | 719 | QPEApplication::setKeepRunning(); |
720 | 720 | ||
721 | } | 721 | } |
722 | 722 | ||
723 | void AddressbookWindow::editEntry( EntryMode entryMode ) | 723 | void AddressbookWindow::editEntry( EntryMode entryMode ) |
724 | { | 724 | { |
725 | OContact entry; | 725 | OContact entry; |
726 | if ( !abEditor ) { | 726 | if ( !abEditor ) { |
727 | abEditor = new ContactEditor( entry, this, "editor" ); | 727 | abEditor = new ContactEditor( entry, this, "editor" ); |
728 | } | 728 | } |
729 | if ( entryMode == EditEntry ) | 729 | if ( entryMode == EditEntry ) |
730 | abEditor->setEntry( m_abView -> currentEntry() ); | 730 | abEditor->setEntry( m_abView -> currentEntry() ); |
731 | else if ( entryMode == NewEntry ) | 731 | else if ( entryMode == NewEntry ) |
732 | abEditor->setEntry( entry ); | 732 | abEditor->setEntry( entry ); |
733 | // other things may change the caption. | 733 | // other things may change the caption. |
734 | abEditor->setCaption( tr("Edit Address") ); | 734 | abEditor->setCaption( tr("Edit Address") ); |
735 | 735 | ||
736 | // fix the foxus... | 736 | // fix the foxus... |
737 | abEditor->setNameFocus(); | 737 | abEditor->setNameFocus(); |
738 | if ( QPEApplication::execDialog( abEditor ) ) { | 738 | if ( QPEApplication::execDialog( abEditor ) ) { |
739 | setFocus(); | 739 | setFocus(); |
740 | if ( entryMode == NewEntry ) { | 740 | if ( entryMode == NewEntry ) { |
741 | OContact insertEntry = abEditor->entry(); | 741 | OContact insertEntry = abEditor->entry(); |
742 | insertEntry.assignUid(); | 742 | insertEntry.assignUid(); |
743 | m_abView -> addEntry( insertEntry ); | 743 | m_abView -> addEntry( insertEntry ); |
744 | m_abView -> setCurrentUid( insertEntry.uid() ); | 744 | m_abView -> setCurrentUid( insertEntry.uid() ); |
745 | } else { | 745 | } else { |
746 | OContact replEntry = abEditor->entry(); | 746 | OContact replEntry = abEditor->entry(); |
747 | 747 | ||
748 | if ( !replEntry.isValidUid() ) | 748 | if ( !replEntry.isValidUid() ) |
749 | replEntry.assignUid(); | 749 | replEntry.assignUid(); |
750 | 750 | ||
751 | m_abView -> replaceEntry( replEntry ); | 751 | m_abView -> replaceEntry( replEntry ); |
752 | } | 752 | } |
753 | } | 753 | } |
754 | // populateCategories(); | 754 | // populateCategories(); |
755 | 755 | ||
756 | } | 756 | } |
757 | 757 | ||
758 | void AddressbookWindow::editPersonal() | 758 | void AddressbookWindow::editPersonal() |
759 | { | 759 | { |
760 | OContact entry; | 760 | OContact entry; |
761 | 761 | ||
762 | // Switch to personal view if not selected | 762 | // Switch to personal view if not selected |
763 | // but take care of the menu, too | 763 | // but take care of the menu, too |
764 | if ( ! actionPersonal->isOn() ){ | 764 | if ( ! actionPersonal->isOn() ){ |
765 | qWarning("*** ++++"); | 765 | qWarning("*** ++++"); |
766 | actionPersonal->setOn( true ); | 766 | actionPersonal->setOn( true ); |
767 | slotPersonalView(); | 767 | slotPersonalView(); |
768 | } | 768 | } |
769 | 769 | ||
770 | if ( !abEditor ) { | 770 | if ( !abEditor ) { |
771 | abEditor = new ContactEditor( entry, this, "editor" ); | 771 | abEditor = new ContactEditor( entry, this, "editor" ); |
772 | } | 772 | } |
diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp index b1eb042..8acf570 100644 --- a/core/pim/addressbook/contacteditor.cpp +++ b/core/pim/addressbook/contacteditor.cpp | |||
@@ -442,327 +442,327 @@ void ContactEditor::init() { | |||
442 | cmbCountry->insertItem( tr ( "Solomon Islands" ) ); | 442 | cmbCountry->insertItem( tr ( "Solomon Islands" ) ); |
443 | cmbCountry->insertItem( tr ( "Somalia" ) ); | 443 | cmbCountry->insertItem( tr ( "Somalia" ) ); |
444 | cmbCountry->insertItem( tr ( "South Africa" ) ); | 444 | cmbCountry->insertItem( tr ( "South Africa" ) ); |
445 | cmbCountry->insertItem( tr ( "Spain" ) ); | 445 | cmbCountry->insertItem( tr ( "Spain" ) ); |
446 | cmbCountry->insertItem( tr ( "Sri Lanka" ) ); | 446 | cmbCountry->insertItem( tr ( "Sri Lanka" ) ); |
447 | cmbCountry->insertItem( tr ( "St. Helena" ) ); | 447 | cmbCountry->insertItem( tr ( "St. Helena" ) ); |
448 | cmbCountry->insertItem( tr ( "Sudan" ) ); | 448 | cmbCountry->insertItem( tr ( "Sudan" ) ); |
449 | cmbCountry->insertItem( tr ( "Suriname" ) ); | 449 | cmbCountry->insertItem( tr ( "Suriname" ) ); |
450 | cmbCountry->insertItem( tr ( "Swaziland" ) ); | 450 | cmbCountry->insertItem( tr ( "Swaziland" ) ); |
451 | cmbCountry->insertItem( tr ( "Sweden" ) ); | 451 | cmbCountry->insertItem( tr ( "Sweden" ) ); |
452 | cmbCountry->insertItem( tr ( "Switzerland" ) ); | 452 | cmbCountry->insertItem( tr ( "Switzerland" ) ); |
453 | cmbCountry->insertItem( tr ( "Taiwan" ) ); | 453 | cmbCountry->insertItem( tr ( "Taiwan" ) ); |
454 | cmbCountry->insertItem( tr ( "Tajikistan" ) ); | 454 | cmbCountry->insertItem( tr ( "Tajikistan" ) ); |
455 | cmbCountry->insertItem( tr ( "Tanzania" ) ); | 455 | cmbCountry->insertItem( tr ( "Tanzania" ) ); |
456 | cmbCountry->insertItem( tr ( "Thailand" ) ); | 456 | cmbCountry->insertItem( tr ( "Thailand" ) ); |
457 | cmbCountry->insertItem( tr ( "Togo" ) ); | 457 | cmbCountry->insertItem( tr ( "Togo" ) ); |
458 | cmbCountry->insertItem( tr ( "Tokelau" ) ); | 458 | cmbCountry->insertItem( tr ( "Tokelau" ) ); |
459 | cmbCountry->insertItem( tr ( "Tonga" ) ); | 459 | cmbCountry->insertItem( tr ( "Tonga" ) ); |
460 | cmbCountry->insertItem( tr ( "Tunisia" ) ); | 460 | cmbCountry->insertItem( tr ( "Tunisia" ) ); |
461 | cmbCountry->insertItem( tr ( "Turkey" ) ); | 461 | cmbCountry->insertItem( tr ( "Turkey" ) ); |
462 | cmbCountry->insertItem( tr ( "Turkmenistan" ) ); | 462 | cmbCountry->insertItem( tr ( "Turkmenistan" ) ); |
463 | cmbCountry->insertItem( tr ( "Tuvalu" ) ); | 463 | cmbCountry->insertItem( tr ( "Tuvalu" ) ); |
464 | cmbCountry->insertItem( tr ( "Uganda" ) ); | 464 | cmbCountry->insertItem( tr ( "Uganda" ) ); |
465 | cmbCountry->insertItem( tr ( "Ukraine" ) ); | 465 | cmbCountry->insertItem( tr ( "Ukraine" ) ); |
466 | cmbCountry->insertItem( tr ( "Uruguay" ) ); | 466 | cmbCountry->insertItem( tr ( "Uruguay" ) ); |
467 | cmbCountry->insertItem( tr ( "Uzbekistan" ) ); | 467 | cmbCountry->insertItem( tr ( "Uzbekistan" ) ); |
468 | cmbCountry->insertItem( tr ( "Vanuatu" ) ); | 468 | cmbCountry->insertItem( tr ( "Vanuatu" ) ); |
469 | cmbCountry->insertItem( tr ( "Venezuela" ) ); | 469 | cmbCountry->insertItem( tr ( "Venezuela" ) ); |
470 | cmbCountry->insertItem( tr ( "Vietnam" ) ); | 470 | cmbCountry->insertItem( tr ( "Vietnam" ) ); |
471 | cmbCountry->insertItem( tr ( "Virgin Islands" ) ); | 471 | cmbCountry->insertItem( tr ( "Virgin Islands" ) ); |
472 | cmbCountry->insertItem( tr ( "Western Sahara" ) ); | 472 | cmbCountry->insertItem( tr ( "Western Sahara" ) ); |
473 | cmbCountry->insertItem( tr ( "Yemen" ) ); | 473 | cmbCountry->insertItem( tr ( "Yemen" ) ); |
474 | cmbCountry->insertItem( tr ( "Yugoslavia" ) ); | 474 | cmbCountry->insertItem( tr ( "Yugoslavia" ) ); |
475 | cmbCountry->insertItem( tr ( "Zambia" ) ); | 475 | cmbCountry->insertItem( tr ( "Zambia" ) ); |
476 | cmbCountry->insertItem( tr ( "Zimbabwe" ) ); | 476 | cmbCountry->insertItem( tr ( "Zimbabwe" ) ); |
477 | if (cmbCountry->listBox()!=0) | 477 | if (cmbCountry->listBox()!=0) |
478 | cmbCountry->listBox()->sort(); | 478 | cmbCountry->listBox()->sort(); |
479 | 479 | ||
480 | cmbCountry->setMaximumWidth( 135 ); | 480 | cmbCountry->setMaximumWidth( 135 ); |
481 | 481 | ||
482 | gl->addMultiCellWidget( cmbCountry, 5, 5, 1, 2 ); | 482 | gl->addMultiCellWidget( cmbCountry, 5, 5, 1, 2 ); |
483 | 483 | ||
484 | // Chooser 4 | 484 | // Chooser 4 |
485 | cmbChooserField4 = new QComboBox( FALSE, container ); | 485 | cmbChooserField4 = new QComboBox( FALSE, container ); |
486 | cmbChooserField4->setMaximumWidth( 90 ); | 486 | cmbChooserField4->setMaximumWidth( 90 ); |
487 | gl->addWidget( cmbChooserField4, 6, 0 ); | 487 | gl->addWidget( cmbChooserField4, 6, 0 ); |
488 | // Textfield for chooser 2 | 488 | // Textfield for chooser 2 |
489 | // Now use WidgetStack to contain the textfield and the default-email combo! | 489 | // Now use WidgetStack to contain the textfield and the default-email combo! |
490 | m_widgetStack4 = new QWidgetStack( container ); | 490 | m_widgetStack4 = new QWidgetStack( container ); |
491 | txtChooserField4 = new QLineEdit( m_widgetStack4 ); | 491 | txtChooserField4 = new QLineEdit( m_widgetStack4 ); |
492 | m_widgetStack4 -> addWidget( txtChooserField4, TextField ); | 492 | m_widgetStack4 -> addWidget( txtChooserField4, TextField ); |
493 | gl->addMultiCellWidget( m_widgetStack4, 6, 6, 1, 2 ); | 493 | gl->addMultiCellWidget( m_widgetStack4, 6, 6, 1, 2 ); |
494 | m_widgetStack4 -> raiseWidget( TextField ); | 494 | m_widgetStack4 -> raiseWidget( TextField ); |
495 | 495 | ||
496 | QSpacerItem *space = new QSpacerItem(1,1, | 496 | QSpacerItem *space = new QSpacerItem(1,1, |
497 | QSizePolicy::Maximum, | 497 | QSizePolicy::Maximum, |
498 | QSizePolicy::MinimumExpanding ); | 498 | QSizePolicy::MinimumExpanding ); |
499 | gl->addItem( space, 7, 0 ); | 499 | gl->addItem( space, 7, 0 ); |
500 | 500 | ||
501 | tabMain->insertTab( tabViewport, tr( "Address" ) ); | 501 | tabMain->insertTab( tabViewport, tr( "Address" ) ); |
502 | 502 | ||
503 | tabViewport = new QWidget ( tabMain ); | 503 | tabViewport = new QWidget ( tabMain ); |
504 | 504 | ||
505 | vb = new QVBoxLayout( tabViewport ); | 505 | vb = new QVBoxLayout( tabViewport ); |
506 | 506 | ||
507 | svDetails = new QScrollView( tabViewport ); | 507 | svDetails = new QScrollView( tabViewport ); |
508 | vb->addWidget( svDetails, 0, 0 ); | 508 | vb->addWidget( svDetails, 0, 0 ); |
509 | svDetails->setResizePolicy( QScrollView::AutoOneFit ); | 509 | svDetails->setResizePolicy( QScrollView::AutoOneFit ); |
510 | svDetails->setFrameStyle( QFrame::NoFrame ); | 510 | svDetails->setFrameStyle( QFrame::NoFrame ); |
511 | 511 | ||
512 | container = new QWidget( svDetails->viewport() ); | 512 | container = new QWidget( svDetails->viewport() ); |
513 | svDetails->addChild( container ); | 513 | svDetails->addChild( container ); |
514 | 514 | ||
515 | gl = new QGridLayout( container, 1, 2, 2, 4 ); | 515 | gl = new QGridLayout( container, 1, 2, 2, 4 ); |
516 | 516 | ||
517 | int counter = 0; | 517 | int counter = 0; |
518 | 518 | ||
519 | // Birthday | 519 | // Birthday |
520 | QHBox* hBox = new QHBox( container ); | 520 | QHBox* hBox = new QHBox( container ); |
521 | l = new QLabel( tr("Birthday"), container ); | 521 | l = new QLabel( tr("Birthday"), container ); |
522 | gl->addWidget( l, counter, 0 ); | 522 | gl->addWidget( l, counter, 0 ); |
523 | 523 | ||
524 | QPopupMenu* m1 = new QPopupMenu( container ); | 524 | QPopupMenu* m1 = new QPopupMenu( container ); |
525 | birthdayPicker = new DateBookMonth( m1, 0, TRUE ); | 525 | birthdayPicker = new DateBookMonth( m1, 0, TRUE ); |
526 | m1->insertItem( birthdayPicker ); | 526 | m1->insertItem( birthdayPicker ); |
527 | 527 | ||
528 | birthdayButton= new QToolButton( hBox, "buttonStart" ); | 528 | birthdayButton= new QToolButton( hBox, "buttonStart" ); |
529 | birthdayButton->setPopup( m1 ); | 529 | birthdayButton->setPopup( m1 ); |
530 | birthdayButton->setPopupDelay(0); | 530 | birthdayButton->setPopupDelay(0); |
531 | 531 | ||
532 | QPushButton* deleteButton = new QPushButton( QIconSet( Resource::loadPixmap( "trash" ) ), | 532 | QPushButton* deleteButton = new QPushButton( QIconSet( Resource::loadPixmap( "trash" ) ), |
533 | tr( "Delete" ), | 533 | tr( "Delete" ), |
534 | hBox, 0 ); | 534 | hBox, 0 ); |
535 | 535 | ||
536 | gl->addWidget( hBox, counter , 1 ); | 536 | gl->addWidget( hBox, counter , 1 ); |
537 | 537 | ||
538 | connect( birthdayPicker, SIGNAL( dateClicked( int, int, int ) ), | 538 | connect( birthdayPicker, SIGNAL( dateClicked(int,int,int) ), |
539 | this, SLOT( slotBirthdayDateChanged( int, int, int ) ) ); | 539 | this, SLOT( slotBirthdayDateChanged(int,int,int) ) ); |
540 | connect( deleteButton, SIGNAL( clicked() ), this, SLOT( slotRemoveBirthday() ) ); | 540 | connect( deleteButton, SIGNAL( clicked() ), this, SLOT( slotRemoveBirthday() ) ); |
541 | 541 | ||
542 | ++counter; | 542 | ++counter; |
543 | 543 | ||
544 | // Anniversary | 544 | // Anniversary |
545 | hBox = new QHBox( container ); | 545 | hBox = new QHBox( container ); |
546 | l = new QLabel( tr("Anniversary"), container ); | 546 | l = new QLabel( tr("Anniversary"), container ); |
547 | gl->addWidget( l, counter, 0 ); | 547 | gl->addWidget( l, counter, 0 ); |
548 | 548 | ||
549 | m1 = new QPopupMenu( container ); | 549 | m1 = new QPopupMenu( container ); |
550 | anniversaryPicker = new DateBookMonth( m1, 0, TRUE ); | 550 | anniversaryPicker = new DateBookMonth( m1, 0, TRUE ); |
551 | m1->insertItem( anniversaryPicker ); | 551 | m1->insertItem( anniversaryPicker ); |
552 | 552 | ||
553 | anniversaryButton= new QToolButton( hBox, "buttonStart" ); | 553 | anniversaryButton= new QToolButton( hBox, "buttonStart" ); |
554 | anniversaryButton->setPopup( m1 ); | 554 | anniversaryButton->setPopup( m1 ); |
555 | anniversaryButton->setPopupDelay(0); | 555 | anniversaryButton->setPopupDelay(0); |
556 | 556 | ||
557 | deleteButton = new QPushButton( QIconSet( Resource::loadPixmap( "trash" ) ), | 557 | deleteButton = new QPushButton( QIconSet( Resource::loadPixmap( "trash" ) ), |
558 | tr( "Delete" ), | 558 | tr( "Delete" ), |
559 | hBox, 0 ); | 559 | hBox, 0 ); |
560 | gl->addWidget( hBox, counter , 1 ); | 560 | gl->addWidget( hBox, counter , 1 ); |
561 | 561 | ||
562 | connect( anniversaryPicker, SIGNAL( dateClicked( int, int, int ) ), | 562 | connect( anniversaryPicker, SIGNAL( dateClicked(int,int,int) ), |
563 | this, SLOT( slotAnniversaryDateChanged( int, int, int ) ) ); | 563 | this, SLOT( slotAnniversaryDateChanged(int,int,int) ) ); |
564 | connect( deleteButton, SIGNAL( clicked() ), this, SLOT( slotRemoveAnniversary() ) ); | 564 | connect( deleteButton, SIGNAL( clicked() ), this, SLOT( slotRemoveAnniversary() ) ); |
565 | 565 | ||
566 | ++counter; | 566 | ++counter; |
567 | 567 | ||
568 | // Gender | 568 | // Gender |
569 | l = new QLabel( tr("Gender"), container ); | 569 | l = new QLabel( tr("Gender"), container ); |
570 | gl->addWidget( l, counter, 0 ); | 570 | gl->addWidget( l, counter, 0 ); |
571 | cmbGender = new QComboBox( container ); | 571 | cmbGender = new QComboBox( container ); |
572 | cmbGender->insertItem( "", 0 ); | 572 | cmbGender->insertItem( "", 0 ); |
573 | cmbGender->insertItem( tr("Male"), 1); | 573 | cmbGender->insertItem( tr("Male"), 1); |
574 | cmbGender->insertItem( tr("Female"), 2); | 574 | cmbGender->insertItem( tr("Female"), 2); |
575 | gl->addWidget( cmbGender, counter, 1 ); | 575 | gl->addWidget( cmbGender, counter, 1 ); |
576 | 576 | ||
577 | ++counter; | 577 | ++counter; |
578 | 578 | ||
579 | // Create Labels and lineedit fields for every dynamic entry | 579 | // Create Labels and lineedit fields for every dynamic entry |
580 | QStringList::ConstIterator it = slDynamicEntries.begin(); | 580 | QStringList::ConstIterator it = slDynamicEntries.begin(); |
581 | QMap<QString, int> mapStrToID = OContactFields::untrFieldsToId(); | 581 | QMap<QString, int> mapStrToID = OContactFields::untrFieldsToId(); |
582 | QMap<int, QString> mapIdToStr = OContactFields::idToTrFields(); | 582 | QMap<int, QString> mapIdToStr = OContactFields::idToTrFields(); |
583 | for (i = counter; it != slDynamicEntries.end(); i++, ++it ) { | 583 | for (i = counter; it != slDynamicEntries.end(); i++, ++it ) { |
584 | 584 | ||
585 | if (((*it) == "Anniversary") || | 585 | if (((*it) == "Anniversary") || |
586 | ((*it) == "Birthday")|| ((*it) == "Gender")) continue; | 586 | ((*it) == "Birthday")|| ((*it) == "Gender")) continue; |
587 | 587 | ||
588 | l = new QLabel( mapIdToStr[mapStrToID[*it]], container ); | 588 | l = new QLabel( mapIdToStr[mapStrToID[*it]], container ); |
589 | listName.append( l ); | 589 | listName.append( l ); |
590 | gl->addWidget( l, i, 0 ); | 590 | gl->addWidget( l, i, 0 ); |
591 | QLineEdit *e = new QLineEdit( container ); | 591 | QLineEdit *e = new QLineEdit( container ); |
592 | listValue.append( e ); | 592 | listValue.append( e ); |
593 | gl->addWidget( e, i, 1); | 593 | gl->addWidget( e, i, 1); |
594 | } | 594 | } |
595 | // Fill labels with names.. | 595 | // Fill labels with names.. |
596 | //loadFields(); | 596 | //loadFields(); |
597 | 597 | ||
598 | 598 | ||
599 | tabMain->insertTab( tabViewport, tr( "Details" ) ); | 599 | tabMain->insertTab( tabViewport, tr( "Details" ) ); |
600 | 600 | ||
601 | dlgNote = new QDialog( this, "Note Dialog", TRUE ); | 601 | dlgNote = new QDialog( this, "Note Dialog", TRUE ); |
602 | dlgNote->setCaption( tr("Enter Note") ); | 602 | dlgNote->setCaption( tr("Enter Note") ); |
603 | QVBoxLayout *vbNote = new QVBoxLayout( dlgNote ); | 603 | QVBoxLayout *vbNote = new QVBoxLayout( dlgNote ); |
604 | txtNote = new QMultiLineEdit( dlgNote ); | 604 | txtNote = new QMultiLineEdit( dlgNote ); |
605 | vbNote->addWidget( txtNote ); | 605 | vbNote->addWidget( txtNote ); |
606 | connect( btnNote, SIGNAL(clicked()), this, SLOT(slotNote()) ); | 606 | connect( btnNote, SIGNAL(clicked()), this, SLOT(slotNote()) ); |
607 | 607 | ||
608 | dlgName = new QDialog( this, "Name Dialog", TRUE ); | 608 | dlgName = new QDialog( this, "Name Dialog", TRUE ); |
609 | dlgName->setCaption( tr("Edit Name") ); | 609 | dlgName->setCaption( tr("Edit Name") ); |
610 | gl = new QGridLayout( dlgName, 5, 2, 2, 3 ); | 610 | gl = new QGridLayout( dlgName, 5, 2, 2, 3 ); |
611 | 611 | ||
612 | l = new QLabel( tr("First Name"), dlgName ); | 612 | l = new QLabel( tr("First Name"), dlgName ); |
613 | gl->addWidget( l, 0, 0 ); | 613 | gl->addWidget( l, 0, 0 ); |
614 | txtFirstName = new QLineEdit( dlgName ); | 614 | txtFirstName = new QLineEdit( dlgName ); |
615 | gl->addWidget( txtFirstName, 0, 1 ); | 615 | gl->addWidget( txtFirstName, 0, 1 ); |
616 | 616 | ||
617 | l = new QLabel( tr("Middle Name"), dlgName ); | 617 | l = new QLabel( tr("Middle Name"), dlgName ); |
618 | gl->addWidget( l, 1, 0 ); | 618 | gl->addWidget( l, 1, 0 ); |
619 | txtMiddleName = new QLineEdit( dlgName ); | 619 | txtMiddleName = new QLineEdit( dlgName ); |
620 | gl->addWidget( txtMiddleName, 1, 1 ); | 620 | gl->addWidget( txtMiddleName, 1, 1 ); |
621 | 621 | ||
622 | l = new QLabel( tr("Last Name"), dlgName ); | 622 | l = new QLabel( tr("Last Name"), dlgName ); |
623 | gl->addWidget( l, 2, 0 ); | 623 | gl->addWidget( l, 2, 0 ); |
624 | txtLastName = new QLineEdit( dlgName ); | 624 | txtLastName = new QLineEdit( dlgName ); |
625 | gl->addWidget( txtLastName, 2, 1 ); | 625 | gl->addWidget( txtLastName, 2, 1 ); |
626 | 626 | ||
627 | // l = new QLabel( tr("Suffix"), dlgName ); | 627 | // l = new QLabel( tr("Suffix"), dlgName ); |
628 | // gl->addWidget( l, 3, 0 ); | 628 | // gl->addWidget( l, 3, 0 ); |
629 | // txtSuffix = new QLineEdit( dlgName ); | 629 | // txtSuffix = new QLineEdit( dlgName ); |
630 | // gl->addWidget( txtSuffix, 3, 1 ); | 630 | // gl->addWidget( txtSuffix, 3, 1 ); |
631 | space = new QSpacerItem(1,1, | 631 | space = new QSpacerItem(1,1, |
632 | QSizePolicy::Maximum, | 632 | QSizePolicy::Maximum, |
633 | QSizePolicy::MinimumExpanding ); | 633 | QSizePolicy::MinimumExpanding ); |
634 | gl->addItem( space, 4, 0 ); | 634 | gl->addItem( space, 4, 0 ); |
635 | 635 | ||
636 | cmbChooserField1->insertStringList( trlChooserNames ); | 636 | cmbChooserField1->insertStringList( trlChooserNames ); |
637 | cmbChooserField2->insertStringList( trlChooserNames ); | 637 | cmbChooserField2->insertStringList( trlChooserNames ); |
638 | cmbChooserField3->insertStringList( trlChooserNames ); | 638 | cmbChooserField3->insertStringList( trlChooserNames ); |
639 | cmbChooserField4->insertStringList( trlChooserNames ); | 639 | cmbChooserField4->insertStringList( trlChooserNames ); |
640 | 640 | ||
641 | cmbChooserField1->setCurrentItem( 0 ); | 641 | cmbChooserField1->setCurrentItem( 0 ); |
642 | cmbChooserField2->setCurrentItem( 1 ); | 642 | cmbChooserField2->setCurrentItem( 1 ); |
643 | cmbChooserField3->setCurrentItem( 2 ); | 643 | cmbChooserField3->setCurrentItem( 2 ); |
644 | 644 | ||
645 | connect( btnFullName, SIGNAL(clicked()), this, SLOT(slotName()) ); | 645 | connect( btnFullName, SIGNAL(clicked()), this, SLOT(slotName()) ); |
646 | 646 | ||
647 | connect( txtFullName, SIGNAL(textChanged(const QString &)), | 647 | connect( txtFullName, SIGNAL(textChanged(const QString&)), |
648 | this, SLOT(slotFullNameChange(const QString &)) ); | 648 | this, SLOT(slotFullNameChange(const QString&)) ); |
649 | connect( txtSuffix, SIGNAL(textChanged(const QString &)), | 649 | connect( txtSuffix, SIGNAL(textChanged(const QString&)), |
650 | this, SLOT(slotSuffixChange(const QString &)) ); | 650 | this, SLOT(slotSuffixChange(const QString&)) ); |
651 | connect( txtOrganization, SIGNAL(textChanged(const QString &)), | 651 | connect( txtOrganization, SIGNAL(textChanged(const QString&)), |
652 | this, SLOT(slotOrganizationChange(const QString &)) ); | 652 | this, SLOT(slotOrganizationChange(const QString&)) ); |
653 | connect( txtChooserField1, SIGNAL(textChanged(const QString &)), | 653 | connect( txtChooserField1, SIGNAL(textChanged(const QString&)), |
654 | this, SLOT(slotChooser1Change(const QString &)) ); | 654 | this, SLOT(slotChooser1Change(const QString&)) ); |
655 | connect( txtChooserField2, SIGNAL(textChanged(const QString &)), | 655 | connect( txtChooserField2, SIGNAL(textChanged(const QString&)), |
656 | this, SLOT(slotChooser2Change(const QString &)) ); | 656 | this, SLOT(slotChooser2Change(const QString&)) ); |
657 | connect( txtChooserField3, SIGNAL(textChanged(const QString &)), | 657 | connect( txtChooserField3, SIGNAL(textChanged(const QString&)), |
658 | this, SLOT(slotChooser3Change(const QString &)) ); | 658 | this, SLOT(slotChooser3Change(const QString&)) ); |
659 | connect( txtChooserField4, SIGNAL(textChanged(const QString &)), | 659 | connect( txtChooserField4, SIGNAL(textChanged(const QString&)), |
660 | this, SLOT(slotChooser4Change(const QString &)) ); | 660 | this, SLOT(slotChooser4Change(const QString&)) ); |
661 | connect( txtAddress, SIGNAL(textChanged(const QString &)), | 661 | connect( txtAddress, SIGNAL(textChanged(const QString&)), |
662 | this, SLOT(slotAddressChange(const QString &)) ); | 662 | this, SLOT(slotAddressChange(const QString&)) ); |
663 | connect( txtCity, SIGNAL(textChanged(const QString &)), | 663 | connect( txtCity, SIGNAL(textChanged(const QString&)), |
664 | this, SLOT(slotCityChange(const QString &)) ); | 664 | this, SLOT(slotCityChange(const QString&)) ); |
665 | connect( txtState, SIGNAL(textChanged(const QString &)), | 665 | connect( txtState, SIGNAL(textChanged(const QString&)), |
666 | this, SLOT(slotStateChange(const QString &)) ); | 666 | this, SLOT(slotStateChange(const QString&)) ); |
667 | connect( txtZip, SIGNAL(textChanged(const QString &)), | 667 | connect( txtZip, SIGNAL(textChanged(const QString&)), |
668 | this, SLOT(slotZipChange(const QString &)) ); | 668 | this, SLOT(slotZipChange(const QString&)) ); |
669 | connect( cmbCountry, SIGNAL(textChanged(const QString &)), | 669 | connect( cmbCountry, SIGNAL(textChanged(const QString&)), |
670 | this, SLOT(slotCountryChange(const QString &)) ); | 670 | this, SLOT(slotCountryChange(const QString&)) ); |
671 | connect( cmbCountry, SIGNAL(activated(const QString &)), | 671 | connect( cmbCountry, SIGNAL(activated(const QString&)), |
672 | this, SLOT(slotCountryChange(const QString &)) ); | 672 | this, SLOT(slotCountryChange(const QString&)) ); |
673 | connect( cmbChooserField1, SIGNAL(activated(int)), | 673 | connect( cmbChooserField1, SIGNAL(activated(int)), |
674 | this, SLOT(slotCmbChooser1Change(int)) ); | 674 | this, SLOT(slotCmbChooser1Change(int)) ); |
675 | connect( cmbChooserField2, SIGNAL(activated(int)), | 675 | connect( cmbChooserField2, SIGNAL(activated(int)), |
676 | this, SLOT(slotCmbChooser2Change(int)) ); | 676 | this, SLOT(slotCmbChooser2Change(int)) ); |
677 | connect( cmbChooserField3, SIGNAL(activated(int)), | 677 | connect( cmbChooserField3, SIGNAL(activated(int)), |
678 | this, SLOT(slotCmbChooser3Change(int)) ); | 678 | this, SLOT(slotCmbChooser3Change(int)) ); |
679 | connect( cmbChooserField4, SIGNAL(activated(int)), | 679 | connect( cmbChooserField4, SIGNAL(activated(int)), |
680 | this, SLOT(slotCmbChooser4Change(int)) ); | 680 | this, SLOT(slotCmbChooser4Change(int)) ); |
681 | connect( cmbAddress, SIGNAL(activated(int)), | 681 | connect( cmbAddress, SIGNAL(activated(int)), |
682 | this, SLOT(slotAddressTypeChange(int)) ); | 682 | this, SLOT(slotAddressTypeChange(int)) ); |
683 | 683 | ||
684 | new QPEDialogListener(this); | 684 | new QPEDialogListener(this); |
685 | 685 | ||
686 | setPersonalView ( m_personalView ); | 686 | setPersonalView ( m_personalView ); |
687 | 687 | ||
688 | qWarning("init() END"); | 688 | qWarning("init() END"); |
689 | } | 689 | } |
690 | 690 | ||
691 | void ContactEditor::defaultEmailChanged(int i){ | 691 | void ContactEditor::defaultEmailChanged(int i){ |
692 | qDebug("defaultEmailChanged"); | 692 | qDebug("defaultEmailChanged"); |
693 | 693 | ||
694 | // was sollte das ? (se) | 694 | // was sollte das ? (se) |
695 | // int index = cmbChooserField1->currentItem(); | 695 | // int index = cmbChooserField1->currentItem(); |
696 | // slChooserValues[index] = cmbDefaultEmail->text(i); | 696 | // slChooserValues[index] = cmbDefaultEmail->text(i); |
697 | 697 | ||
698 | defaultEmail = cmbDefaultEmail->text(i); | 698 | defaultEmail = cmbDefaultEmail->text(i); |
699 | qDebug ("Changed to: %s", defaultEmail.latin1()); | 699 | qDebug ("Changed to: %s", defaultEmail.latin1()); |
700 | 700 | ||
701 | } | 701 | } |
702 | 702 | ||
703 | void ContactEditor::populateDefaultEmailCmb(){ | 703 | void ContactEditor::populateDefaultEmailCmb(){ |
704 | 704 | ||
705 | // if the default-email combo was not selected and therfore not created | 705 | // if the default-email combo was not selected and therfore not created |
706 | // we get a lot of trouble.. Therfore create an invisible one.. | 706 | // we get a lot of trouble.. Therfore create an invisible one.. |
707 | if ( !cmbDefaultEmail ){ | 707 | if ( !cmbDefaultEmail ){ |
708 | cmbDefaultEmail = new QComboBox(this); | 708 | cmbDefaultEmail = new QComboBox(this); |
709 | cmbDefaultEmail -> hide(); | 709 | cmbDefaultEmail -> hide(); |
710 | } | 710 | } |
711 | cmbDefaultEmail->clear(); | 711 | cmbDefaultEmail->clear(); |
712 | cmbDefaultEmail->insertStringList( emails ); | 712 | cmbDefaultEmail->insertStringList( emails ); |
713 | // cmbDefaultEmail->show(); | 713 | // cmbDefaultEmail->show(); |
714 | 714 | ||
715 | // Select default email in combo.. | 715 | // Select default email in combo.. |
716 | bool found = false; | 716 | bool found = false; |
717 | for ( int i = 0; i < cmbDefaultEmail->count(); i++){ | 717 | for ( int i = 0; i < cmbDefaultEmail->count(); i++){ |
718 | qDebug(" populateDefaultEmailCmb text >%s< defaultEmail >%s<", | 718 | qDebug(" populateDefaultEmailCmb text >%s< defaultEmail >%s<", |
719 | cmbDefaultEmail->text( i ).latin1(), defaultEmail.latin1()); | 719 | cmbDefaultEmail->text( i ).latin1(), defaultEmail.latin1()); |
720 | 720 | ||
721 | if ( cmbDefaultEmail->text( i ).stripWhiteSpace() == defaultEmail.stripWhiteSpace() ){ | 721 | if ( cmbDefaultEmail->text( i ).stripWhiteSpace() == defaultEmail.stripWhiteSpace() ){ |
722 | cmbDefaultEmail->setCurrentItem( i ); | 722 | cmbDefaultEmail->setCurrentItem( i ); |
723 | qDebug("set"); | 723 | qDebug("set"); |
724 | found = true; | 724 | found = true; |
725 | } | 725 | } |
726 | } | 726 | } |
727 | 727 | ||
728 | // If the current default email is not found in the list, we choose the | 728 | // If the current default email is not found in the list, we choose the |
729 | // first one.. | 729 | // first one.. |
730 | if ( !found ) | 730 | if ( !found ) |
731 | defaultEmail = cmbDefaultEmail->text(0); | 731 | defaultEmail = cmbDefaultEmail->text(0); |
732 | } | 732 | } |
733 | 733 | ||
734 | // Called when any combobox was changed. | 734 | // Called when any combobox was changed. |
735 | // "true" returned if the change was chandled by this function, else it should | 735 | // "true" returned if the change was chandled by this function, else it should |
736 | // be handled by something else.. | 736 | // be handled by something else.. |
737 | bool ContactEditor::cmbChooserChange( int index, QWidgetStack* inputStack, int widgetPos ) { | 737 | bool ContactEditor::cmbChooserChange( int index, QWidgetStack* inputStack, int widgetPos ) { |
738 | QString type = slChooserNames[index]; | 738 | QString type = slChooserNames[index]; |
739 | qWarning("ContactEditor::cmbChooserChange -> Type: %s, WidgetPos: %d", type.latin1(), widgetPos ); | 739 | qWarning("ContactEditor::cmbChooserChange -> Type: %s, WidgetPos: %d", type.latin1(), widgetPos ); |
740 | 740 | ||
741 | if ( !initializing ) | 741 | if ( !initializing ) |
742 | contactfields.setFieldOrder( widgetPos-1, index ); | 742 | contactfields.setFieldOrder( widgetPos-1, index ); |
743 | 743 | ||
744 | // Create and connect combobox for selecting the default email | 744 | // Create and connect combobox for selecting the default email |
745 | if ( type == "Default Email"){ | 745 | if ( type == "Default Email"){ |
746 | qWarning("Choosing default-email (defaultEmailChooserPosition= %d) ", defaultEmailChooserPosition); | 746 | qWarning("Choosing default-email (defaultEmailChooserPosition= %d) ", defaultEmailChooserPosition); |
747 | 747 | ||
748 | // More than one default-email chooser is not allowed ! | 748 | // More than one default-email chooser is not allowed ! |
749 | if ( ( defaultEmailChooserPosition != -1 ) && | 749 | if ( ( defaultEmailChooserPosition != -1 ) && |
750 | defaultEmailChooserPosition != widgetPos && !initializing){ | 750 | defaultEmailChooserPosition != widgetPos && !initializing){ |
751 | chooserError( widgetPos ); | 751 | chooserError( widgetPos ); |
752 | return true; | 752 | return true; |
753 | } | 753 | } |
754 | 754 | ||
755 | QComboBox* cmbo = ( QComboBox* ) inputStack -> widget( Combo ); | 755 | QComboBox* cmbo = ( QComboBox* ) inputStack -> widget( Combo ); |
756 | if ( cmbo ){ | 756 | if ( cmbo ){ |
757 | inputStack->raiseWidget( TextField ); | 757 | inputStack->raiseWidget( TextField ); |
758 | inputStack -> removeWidget( cmbo ); | 758 | inputStack -> removeWidget( cmbo ); |
759 | delete cmbo; | 759 | delete cmbo; |
760 | } | 760 | } |
761 | cmbo = new QComboBox( inputStack ); | 761 | cmbo = new QComboBox( inputStack ); |
762 | cmbo -> insertStringList( emails ); | 762 | cmbo -> insertStringList( emails ); |
763 | 763 | ||
764 | inputStack -> addWidget( cmbo, Combo ); | 764 | inputStack -> addWidget( cmbo, Combo ); |
765 | inputStack -> raiseWidget( Combo ); | 765 | inputStack -> raiseWidget( Combo ); |
766 | 766 | ||
767 | defaultEmailChooserPosition = widgetPos; | 767 | defaultEmailChooserPosition = widgetPos; |
768 | cmbDefaultEmail = cmbo; | 768 | cmbDefaultEmail = cmbo; |
diff --git a/core/pim/datebook/datebook.cpp b/core/pim/datebook/datebook.cpp index af26302..3934411 100644 --- a/core/pim/datebook/datebook.cpp +++ b/core/pim/datebook/datebook.cpp | |||
@@ -68,202 +68,202 @@ DateBook::DateBook( QWidget *parent, const char *, WFlags f ) | |||
68 | { | 68 | { |
69 | bool needEvilHack= false; // if we need an Evil Hack | 69 | bool needEvilHack= false; // if we need an Evil Hack |
70 | QTime t; | 70 | QTime t; |
71 | t.start(); | 71 | t.start(); |
72 | db = new DateBookDBHack; | 72 | db = new DateBookDBHack; |
73 | qDebug("loading db t=%d", t.elapsed() ); | 73 | qDebug("loading db t=%d", t.elapsed() ); |
74 | loadSettings(); | 74 | loadSettings(); |
75 | setCaption( tr("Calendar") ); | 75 | setCaption( tr("Calendar") ); |
76 | setIcon( Resource::loadPixmap( "datebook_icon" ) ); | 76 | setIcon( Resource::loadPixmap( "datebook_icon" ) ); |
77 | 77 | ||
78 | setToolBarsMovable( FALSE ); | 78 | setToolBarsMovable( FALSE ); |
79 | 79 | ||
80 | views = new QWidgetStack( this ); | 80 | views = new QWidgetStack( this ); |
81 | setCentralWidget( views ); | 81 | setCentralWidget( views ); |
82 | 82 | ||
83 | dayView = 0; | 83 | dayView = 0; |
84 | weekView = 0; | 84 | weekView = 0; |
85 | weekLstView = 0; | 85 | weekLstView = 0; |
86 | monthView = 0; | 86 | monthView = 0; |
87 | 87 | ||
88 | // QToolBar *bar = new QToolBar( this ); | 88 | // QToolBar *bar = new QToolBar( this ); |
89 | // bar->setHorizontalStretchable( TRUE ); | 89 | // bar->setHorizontalStretchable( TRUE ); |
90 | 90 | ||
91 | // QMenuBar *mb = new QMenuBar( bar ); | 91 | // QMenuBar *mb = new QMenuBar( bar ); |
92 | // mb->setMargin( 0 ); | 92 | // mb->setMargin( 0 ); |
93 | 93 | ||
94 | // QPopupMenu *view = new QPopupMenu( this ); | 94 | // QPopupMenu *view = new QPopupMenu( this ); |
95 | // mb->insertItem( tr( "View" ), view ); | 95 | // mb->insertItem( tr( "View" ), view ); |
96 | 96 | ||
97 | QToolBar *sub_bar = new QToolBar(this); | 97 | QToolBar *sub_bar = new QToolBar(this); |
98 | sub_bar->setHorizontalStretchable(TRUE); | 98 | sub_bar->setHorizontalStretchable(TRUE); |
99 | 99 | ||
100 | QActionGroup *g = new QActionGroup( this ); | 100 | QActionGroup *g = new QActionGroup( this ); |
101 | g->setExclusive( TRUE ); | 101 | g->setExclusive( TRUE ); |
102 | 102 | ||
103 | QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); | 103 | QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), QString::null, 0, this, 0 ); |
104 | connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); | 104 | connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); |
105 | a->addTo( sub_bar ); | 105 | a->addTo( sub_bar ); |
106 | 106 | ||
107 | sub_bar->addSeparator(); | 107 | sub_bar->addSeparator(); |
108 | 108 | ||
109 | a = new QAction( tr( "Today" ), Resource::loadPixmap( "datebook/to_day" ), QString::null, 0, g, 0 ); | 109 | a = new QAction( tr( "Today" ), Resource::loadPixmap( "datebook/to_day" ), QString::null, 0, g, 0 ); |
110 | connect( a, SIGNAL( activated() ), this, SLOT( slotToday() ) ); | 110 | connect( a, SIGNAL( activated() ), this, SLOT( slotToday() ) ); |
111 | a->addTo( sub_bar ); | 111 | a->addTo( sub_bar ); |
112 | //a->addTo( view ); | 112 | //a->addTo( view ); |
113 | 113 | ||
114 | sub_bar->addSeparator(); | 114 | sub_bar->addSeparator(); |
115 | 115 | ||
116 | a = new QAction( tr( "Day" ), Resource::loadPixmap( "day" ), QString::null, 0, g, 0 ); | 116 | a = new QAction( tr( "Day" ), Resource::loadPixmap( "day" ), QString::null, 0, g, 0 ); |
117 | connect( a, SIGNAL( activated() ), this, SLOT( viewDay() ) ); | 117 | connect( a, SIGNAL( activated() ), this, SLOT( viewDay() ) ); |
118 | a->addTo( sub_bar ); | 118 | a->addTo( sub_bar ); |
119 | // a->addTo( view ); | 119 | // a->addTo( view ); |
120 | a->setToggleAction( TRUE ); | 120 | a->setToggleAction( TRUE ); |
121 | a->setOn( TRUE ); | 121 | a->setOn( TRUE ); |
122 | dayAction = a; | 122 | dayAction = a; |
123 | 123 | ||
124 | a = new QAction( tr( "Week" ), Resource::loadPixmap( "week" ), QString::null, 0, g, 0 ); | 124 | a = new QAction( tr( "Week" ), Resource::loadPixmap( "week" ), QString::null, 0, g, 0 ); |
125 | connect( a, SIGNAL( activated() ), this, SLOT( viewWeek() ) ); | 125 | connect( a, SIGNAL( activated() ), this, SLOT( viewWeek() ) ); |
126 | a->addTo( sub_bar ); | 126 | a->addTo( sub_bar ); |
127 | // a->addTo( view ); | 127 | // a->addTo( view ); |
128 | a->setToggleAction( TRUE ); | 128 | a->setToggleAction( TRUE ); |
129 | weekAction = a; | 129 | weekAction = a; |
130 | 130 | ||
131 | a = new QAction( tr( "WeekLst" ), Resource::loadPixmap( "datebook/weeklst" ), QString::null, 0, g, 0 ); | 131 | a = new QAction( tr( "WeekLst" ), Resource::loadPixmap( "datebook/weeklst" ), QString::null, 0, g, 0 ); |
132 | connect( a, SIGNAL( activated() ), this, SLOT( viewWeekLst() ) ); | 132 | connect( a, SIGNAL( activated() ), this, SLOT( viewWeekLst() ) ); |
133 | a->addTo( sub_bar ); | 133 | a->addTo( sub_bar ); |
134 | // a->addTo( view ); | 134 | // a->addTo( view ); |
135 | a->setToggleAction( TRUE ); | 135 | a->setToggleAction( TRUE ); |
136 | weekLstAction = a; | 136 | weekLstAction = a; |
137 | 137 | ||
138 | a = new QAction( tr( "Month" ), Resource::loadPixmap( "month" ), QString::null, 0, g, 0 ); | 138 | a = new QAction( tr( "Month" ), Resource::loadPixmap( "month" ), QString::null, 0, g, 0 ); |
139 | connect( a, SIGNAL( activated() ), this, SLOT( viewMonth() ) ); | 139 | connect( a, SIGNAL( activated() ), this, SLOT( viewMonth() ) ); |
140 | a->addTo( sub_bar ); | 140 | a->addTo( sub_bar ); |
141 | // a->addTo( view ); | 141 | // a->addTo( view ); |
142 | a->setToggleAction( TRUE ); | 142 | a->setToggleAction( TRUE ); |
143 | monthAction = a; | 143 | monthAction = a; |
144 | 144 | ||
145 | sub_bar->addSeparator(); | 145 | sub_bar->addSeparator(); |
146 | 146 | ||
147 | a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ), QString::null, 0, this, 0 ); | 147 | a = new QAction( tr( "Find" ), Resource::loadPixmap( "mag" ), QString::null, 0, this, 0 ); |
148 | connect( a, SIGNAL(activated()), this, SLOT(slotFind()) ); | 148 | connect( a, SIGNAL(activated()), this, SLOT(slotFind()) ); |
149 | a->addTo( sub_bar ); | 149 | a->addTo( sub_bar ); |
150 | 150 | ||
151 | a = new QAction( tr( "Edit..." ), Resource::loadPixmap("SettingsIcon"), QString::null, 0, this, 0 ); | 151 | a = new QAction( tr( "Edit..." ), Resource::loadPixmap("SettingsIcon"), QString::null, 0, this, 0 ); |
152 | connect( a, SIGNAL( activated() ), this, SLOT( slotSettings() ) ); | 152 | connect( a, SIGNAL( activated() ), this, SLOT( slotSettings() ) ); |
153 | a->addTo( sub_bar ); | 153 | a->addTo( sub_bar ); |
154 | 154 | ||
155 | if(defaultView==DAY) viewDay(); | 155 | if(defaultView==DAY) viewDay(); |
156 | if(defaultView==WEEK) needEvilHack=true;// viewWeek(); | 156 | if(defaultView==WEEK) needEvilHack=true;// viewWeek(); |
157 | if(defaultView==WEEKLST) viewWeekLst(); | 157 | if(defaultView==WEEKLST) viewWeekLst(); |
158 | if(defaultView==MONTH) viewMonth(); | 158 | if(defaultView==MONTH) viewMonth(); |
159 | 159 | ||
160 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) ); | 160 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) ); |
161 | connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(changeWeek(bool)) ); | 161 | connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(changeWeek(bool)) ); |
162 | 162 | ||
163 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 163 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
164 | connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray&)), this, SLOT(appMessage(const QCString&, const QByteArray&)) ); | 164 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), this, SLOT(appMessage(const QCString&,const QByteArray&)) ); |
165 | #endif | 165 | #endif |
166 | 166 | ||
167 | // listen on QPE/System | 167 | // listen on QPE/System |
168 | #if defined(Q_WS_QWS) | 168 | #if defined(Q_WS_QWS) |
169 | #if !defined(QT_NO_COP) | 169 | #if !defined(QT_NO_COP) |
170 | QCopChannel *channel = new QCopChannel( "QPE/System", this ); | 170 | QCopChannel *channel = new QCopChannel( "QPE/System", this ); |
171 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) ); | 171 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), this, SLOT(receive(const QCString&,const QByteArray&)) ); |
172 | channel = new QCopChannel( "QPE/Datebook", this ); | 172 | channel = new QCopChannel( "QPE/Datebook", this ); |
173 | connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) ); | 173 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), this, SLOT(receive(const QCString&,const QByteArray&)) ); |
174 | #endif | 174 | #endif |
175 | #endif | 175 | #endif |
176 | 176 | ||
177 | qDebug("done t=%d", t.elapsed() ); | 177 | qDebug("done t=%d", t.elapsed() ); |
178 | 178 | ||
179 | connect( qApp, SIGNAL( flush() ), this, SLOT( flush() ) ); | 179 | connect( qApp, SIGNAL( flush() ), this, SLOT( flush() ) ); |
180 | connect( qApp, SIGNAL( reload()), this, SLOT( reload() ) ); | 180 | connect( qApp, SIGNAL( reload()), this, SLOT( reload() ) ); |
181 | /* | 181 | /* |
182 | * Here is a problem description: | 182 | * Here is a problem description: |
183 | * When Weekview is the default view | 183 | * When Weekview is the default view |
184 | * a DateBookWeekView get's created | 184 | * a DateBookWeekView get's created |
185 | * redraw() get's called. So what? | 185 | * redraw() get's called. So what? |
186 | * Remember that we're still in the c'tor | 186 | * Remember that we're still in the c'tor |
187 | * and no final layout has happened? Ok | 187 | * and no final layout has happened? Ok |
188 | * now all Events get arranged. Their x | 188 | * now all Events get arranged. Their x |
189 | * position get's determined by a QHeader | 189 | * position get's determined by a QHeader |
190 | * position. But the QHeader isn't layouted or | 190 | * position. But the QHeader isn't layouted or |
191 | * at the right position. redraw() is a slot | 191 | * at the right position. redraw() is a slot |
192 | * so we'll call it then via a singleShot | 192 | * so we'll call it then via a singleShot |
193 | * from view() | 193 | * from view() |
194 | */ | 194 | */ |
195 | if( needEvilHack ){ | 195 | if( needEvilHack ){ |
196 | QTimer::singleShot( 500, this, SLOT(viewWeek()) ); | 196 | QTimer::singleShot( 500, this, SLOT(viewWeek()) ); |
197 | } | 197 | } |
198 | } | 198 | } |
199 | 199 | ||
200 | void DateBook::receive( const QCString &msg, const QByteArray &data ) | 200 | void DateBook::receive( const QCString &msg, const QByteArray &data ) |
201 | { | 201 | { |
202 | QDataStream stream( data, IO_ReadOnly ); | 202 | QDataStream stream( data, IO_ReadOnly ); |
203 | if ( msg == "timeChange(QString)" ) { | 203 | if ( msg == "timeChange(QString)" ) { |
204 | // update active view! | 204 | // update active view! |
205 | if ( dayAction->isOn() ) | 205 | if ( dayAction->isOn() ) |
206 | viewDay(); | 206 | viewDay(); |
207 | else if ( weekAction->isOn() ) | 207 | else if ( weekAction->isOn() ) |
208 | viewWeek(); | 208 | viewWeek(); |
209 | else if ( monthAction->isOn() ) | 209 | else if ( monthAction->isOn() ) |
210 | viewMonth(); | 210 | viewMonth(); |
211 | } | 211 | } |
212 | else if (msg == "editEvent(int)") { | 212 | else if (msg == "editEvent(int)") { |
213 | int uid; | 213 | int uid; |
214 | stream >> uid; | 214 | stream >> uid; |
215 | Event e=db->eventByUID(uid); | 215 | Event e=db->eventByUID(uid); |
216 | editEvent(e); | 216 | editEvent(e); |
217 | }else if (msg == "viewDefault(QDate)"){ | 217 | }else if (msg == "viewDefault(QDate)"){ |
218 | QDate day; | 218 | QDate day; |
219 | stream >> day; | 219 | stream >> day; |
220 | viewDefault(day); | 220 | viewDefault(day); |
221 | } | 221 | } |
222 | } | 222 | } |
223 | 223 | ||
224 | DateBook::~DateBook() | 224 | DateBook::~DateBook() |
225 | { | 225 | { |
226 | } | 226 | } |
227 | 227 | ||
228 | void DateBook::slotSettings() | 228 | void DateBook::slotSettings() |
229 | { | 229 | { |
230 | DateBookSettings frmSettings( ampm, this ); | 230 | DateBookSettings frmSettings( ampm, this ); |
231 | frmSettings.setStartTime( startTime ); | 231 | frmSettings.setStartTime( startTime ); |
232 | frmSettings.setAlarmPreset( aPreset, presetTime ); | 232 | frmSettings.setAlarmPreset( aPreset, presetTime ); |
233 | frmSettings.setJumpToCurTime( bJumpToCurTime ); | 233 | frmSettings.setJumpToCurTime( bJumpToCurTime ); |
234 | frmSettings.setRowStyle( rowStyle ); | 234 | frmSettings.setRowStyle( rowStyle ); |
235 | frmSettings.comboDefaultView->setCurrentItem(defaultView-1); | 235 | frmSettings.comboDefaultView->setCurrentItem(defaultView-1); |
236 | frmSettings.comboWeekListView->setCurrentItem(weeklistviewconfig); | 236 | frmSettings.comboWeekListView->setCurrentItem(weeklistviewconfig); |
237 | 237 | ||
238 | bool found=false; | 238 | bool found=false; |
239 | for (int i=0; i<(frmSettings.comboLocation->count()); i++) { | 239 | for (int i=0; i<(frmSettings.comboLocation->count()); i++) { |
240 | if ( frmSettings.comboLocation->text(i) == defaultLocation ) { | 240 | if ( frmSettings.comboLocation->text(i) == defaultLocation ) { |
241 | frmSettings.comboLocation->setCurrentItem(i); | 241 | frmSettings.comboLocation->setCurrentItem(i); |
242 | found=true; | 242 | found=true; |
243 | break; | 243 | break; |
244 | } | 244 | } |
245 | } | 245 | } |
246 | if(!found) { | 246 | if(!found) { |
247 | frmSettings.comboLocation->insertItem(defaultLocation); | 247 | frmSettings.comboLocation->insertItem(defaultLocation); |
248 | frmSettings.comboLocation->setCurrentItem(frmSettings.comboLocation->count()-1); | 248 | frmSettings.comboLocation->setCurrentItem(frmSettings.comboLocation->count()-1); |
249 | } | 249 | } |
250 | frmSettings.comboCategory->setCategories(defaultCategories,"Calendar", tr("Calendar")); | 250 | frmSettings.comboCategory->setCategories(defaultCategories,"Calendar", tr("Calendar")); |
251 | 251 | ||
252 | if ( QPEApplication::execDialog( &frmSettings ) ) { | 252 | if ( QPEApplication::execDialog( &frmSettings ) ) { |
253 | aPreset = frmSettings.alarmPreset(); | 253 | aPreset = frmSettings.alarmPreset(); |
254 | presetTime = frmSettings.presetTime(); | 254 | presetTime = frmSettings.presetTime(); |
255 | startTime = frmSettings.startTime(); | 255 | startTime = frmSettings.startTime(); |
256 | bJumpToCurTime = frmSettings.jumpToCurTime(); | 256 | bJumpToCurTime = frmSettings.jumpToCurTime(); |
257 | rowStyle = frmSettings.rowStyle(); | 257 | rowStyle = frmSettings.rowStyle(); |
258 | defaultView=frmSettings.comboDefaultView->currentItem()+1; | 258 | defaultView=frmSettings.comboDefaultView->currentItem()+1; |
259 | weeklistviewconfig=frmSettings.comboWeekListView->currentItem(); | 259 | weeklistviewconfig=frmSettings.comboWeekListView->currentItem(); |
260 | defaultLocation=frmSettings.comboLocation->currentText(); | 260 | defaultLocation=frmSettings.comboLocation->currentText(); |
261 | defaultCategories=frmSettings.comboCategory->currentCategories(); | 261 | defaultCategories=frmSettings.comboCategory->currentCategories(); |
262 | 262 | ||
263 | if ( dayView ) { | 263 | if ( dayView ) { |
264 | dayView->setStartViewTime( startTime ); | 264 | dayView->setStartViewTime( startTime ); |
265 | dayView->setJumpToCurTime( bJumpToCurTime ); | 265 | dayView->setJumpToCurTime( bJumpToCurTime ); |
266 | dayView->setRowStyle( rowStyle ); | 266 | dayView->setRowStyle( rowStyle ); |
267 | } | 267 | } |
268 | if ( weekView ) { | 268 | if ( weekView ) { |
269 | weekView->setStartViewTime( startTime ); | 269 | weekView->setStartViewTime( startTime ); |
@@ -424,246 +424,246 @@ void DateBook::duplicateEvent( const Event &e ) | |||
424 | } | 424 | } |
425 | /* | 425 | /* |
426 | * The problem: | 426 | * The problem: |
427 | * DateBookDB does remove repeating events not by uid but by the time | 427 | * DateBookDB does remove repeating events not by uid but by the time |
428 | * the recurrence was created | 428 | * the recurrence was created |
429 | * so we need to update that time as well | 429 | * so we need to update that time as well |
430 | */ | 430 | */ |
431 | Event::RepeatPattern rp = newEv.repeatPattern(); | 431 | Event::RepeatPattern rp = newEv.repeatPattern(); |
432 | rp.createTime = ::time( NULL ); | 432 | rp.createTime = ::time( NULL ); |
433 | newEv.setRepeat( TRUE, rp ); // has repeat and repeatPattern... | 433 | newEv.setRepeat( TRUE, rp ); // has repeat and repeatPattern... |
434 | if( newEv.uid() == e.uid() || !newEv.isValidUid() ) | 434 | if( newEv.uid() == e.uid() || !newEv.isValidUid() ) |
435 | newEv.assignUid(); | 435 | newEv.assignUid(); |
436 | 436 | ||
437 | db->addEvent(newEv); | 437 | db->addEvent(newEv); |
438 | emit newEvent(); | 438 | emit newEvent(); |
439 | break; | 439 | break; |
440 | } | 440 | } |
441 | } | 441 | } |
442 | 442 | ||
443 | void DateBook::editEvent( const Event &e ) | 443 | void DateBook::editEvent( const Event &e ) |
444 | { | 444 | { |
445 | if (syncing) { | 445 | if (syncing) { |
446 | QMessageBox::warning( this, tr("Calendar"), tr( "Can not edit data, currently syncing") ); | 446 | QMessageBox::warning( this, tr("Calendar"), tr( "Can not edit data, currently syncing") ); |
447 | return; | 447 | return; |
448 | } | 448 | } |
449 | 449 | ||
450 | // workaround added for text input. | 450 | // workaround added for text input. |
451 | QDialog editDlg( this, 0, TRUE ); | 451 | QDialog editDlg( this, 0, TRUE ); |
452 | DateEntry *entry; | 452 | DateEntry *entry; |
453 | editDlg.setCaption( tr("Edit Event") ); | 453 | editDlg.setCaption( tr("Edit Event") ); |
454 | QVBoxLayout *vb = new QVBoxLayout( &editDlg ); | 454 | QVBoxLayout *vb = new QVBoxLayout( &editDlg ); |
455 | QScrollView *sv = new QScrollView( &editDlg, "scrollview" ); | 455 | QScrollView *sv = new QScrollView( &editDlg, "scrollview" ); |
456 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 456 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
457 | // KLUDGE!!! | 457 | // KLUDGE!!! |
458 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); | 458 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); |
459 | vb->addWidget( sv ); | 459 | vb->addWidget( sv ); |
460 | entry = new DateEntry( onMonday, e, ampm, &editDlg, "editor" ); | 460 | entry = new DateEntry( onMonday, e, ampm, &editDlg, "editor" ); |
461 | entry->timezone->setEnabled( FALSE ); | 461 | entry->timezone->setEnabled( FALSE ); |
462 | sv->addChild( entry ); | 462 | sv->addChild( entry ); |
463 | 463 | ||
464 | while ( QPEApplication::execDialog( &editDlg ) ) { | 464 | while ( QPEApplication::execDialog( &editDlg ) ) { |
465 | Event newEv = entry->event(); | 465 | Event newEv = entry->event(); |
466 | if(newEv.description().isEmpty() && newEv.notes().isEmpty() ) | 466 | if(newEv.description().isEmpty() && newEv.notes().isEmpty() ) |
467 | break; | 467 | break; |
468 | newEv.setUid(e.uid()); // FIXME: Hack not to clear uid | 468 | newEv.setUid(e.uid()); // FIXME: Hack not to clear uid |
469 | QString error = checkEvent(newEv); | 469 | QString error = checkEvent(newEv); |
470 | if (!error.isNull()) { | 470 | if (!error.isNull()) { |
471 | if (QMessageBox::warning(this, tr("error box"), error, tr("Fix it"), tr("Continue"), 0, 0, 1) == 0) continue; | 471 | if (QMessageBox::warning(this, tr("error box"), error, tr("Fix it"), tr("Continue"), 0, 0, 1) == 0) continue; |
472 | } | 472 | } |
473 | db->editEvent(e, newEv); | 473 | db->editEvent(e, newEv); |
474 | emit newEvent(); | 474 | emit newEvent(); |
475 | break; | 475 | break; |
476 | } | 476 | } |
477 | } | 477 | } |
478 | 478 | ||
479 | void DateBook::removeEvent( const Event &e ) | 479 | void DateBook::removeEvent( const Event &e ) |
480 | { | 480 | { |
481 | if (syncing) { | 481 | if (syncing) { |
482 | QMessageBox::warning( this, tr("Calendar"), tr( "Can not edit data, currently syncing") ); | 482 | QMessageBox::warning( this, tr("Calendar"), tr( "Can not edit data, currently syncing") ); |
483 | return; | 483 | return; |
484 | } | 484 | } |
485 | 485 | ||
486 | QString strName = e.description(); | 486 | QString strName = e.description(); |
487 | 487 | ||
488 | if ( !QPEMessageBox::confirmDelete( this, tr( "Calendar" ),strName ) ) | 488 | if ( !QPEMessageBox::confirmDelete( this, tr( "Calendar" ),strName ) ) |
489 | return; | 489 | return; |
490 | 490 | ||
491 | db->removeEvent( e ); | 491 | db->removeEvent( e ); |
492 | if ( views->visibleWidget() == dayView && dayView ) | 492 | if ( views->visibleWidget() == dayView && dayView ) |
493 | dayView->redraw(); | 493 | dayView->redraw(); |
494 | 494 | ||
495 | } | 495 | } |
496 | 496 | ||
497 | void DateBook::addEvent( const Event &e ) | 497 | void DateBook::addEvent( const Event &e ) |
498 | { | 498 | { |
499 | QDate d = e.start().date(); | 499 | QDate d = e.start().date(); |
500 | initDay(); | 500 | initDay(); |
501 | dayView->setDate( d ); | 501 | dayView->setDate( d ); |
502 | } | 502 | } |
503 | 503 | ||
504 | void DateBook::showDay( int year, int month, int day ) | 504 | void DateBook::showDay( int year, int month, int day ) |
505 | { | 505 | { |
506 | QDate d(year, month, day); | 506 | QDate d(year, month, day); |
507 | view(DAY,d); | 507 | view(DAY,d); |
508 | } | 508 | } |
509 | 509 | ||
510 | void DateBook::initDay() | 510 | void DateBook::initDay() |
511 | { | 511 | { |
512 | if ( !dayView ) { | 512 | if ( !dayView ) { |
513 | dayView = new DateBookDay( ampm, onMonday, db, views, "day view" ); | 513 | dayView = new DateBookDay( ampm, onMonday, db, views, "day view" ); |
514 | views->addWidget( dayView, DAY ); | 514 | views->addWidget( dayView, DAY ); |
515 | dayView->setJumpToCurTime( bJumpToCurTime ); | 515 | dayView->setJumpToCurTime( bJumpToCurTime ); |
516 | dayView->setStartViewTime( startTime ); | 516 | dayView->setStartViewTime( startTime ); |
517 | dayView->setRowStyle( rowStyle ); | 517 | dayView->setRowStyle( rowStyle ); |
518 | connect( this, SIGNAL( newEvent() ), dayView, SLOT( redraw() ) ); | 518 | connect( this, SIGNAL( newEvent() ), dayView, SLOT( redraw() ) ); |
519 | connect( dayView, SIGNAL( newEvent() ), this, SLOT( fileNew() ) ); | 519 | connect( dayView, SIGNAL( newEvent() ), this, SLOT( fileNew() ) ); |
520 | connect( dayView, SIGNAL( removeEvent( const Event & ) ), this, SLOT( removeEvent( const Event & ) ) ); | 520 | connect( dayView, SIGNAL( removeEvent(const Event&) ), this, SLOT( removeEvent(const Event&) ) ); |
521 | connect( dayView, SIGNAL( editEvent( const Event & ) ), this, SLOT( editEvent( const Event & ) ) ); | 521 | connect( dayView, SIGNAL( editEvent(const Event&) ), this, SLOT( editEvent(const Event&) ) ); |
522 | connect( dayView, SIGNAL( duplicateEvent( const Event & ) ), this, SLOT( duplicateEvent( const Event & ) ) ); | 522 | connect( dayView, SIGNAL( duplicateEvent(const Event&) ), this, SLOT( duplicateEvent(const Event&) ) ); |
523 | connect( dayView, SIGNAL( beamEvent( const Event & ) ), this, SLOT( beamEvent( const Event & ) ) ); | 523 | connect( dayView, SIGNAL( beamEvent(const Event&) ), this, SLOT( beamEvent(const Event&) ) ); |
524 | connect( dayView, SIGNAL(sigNewEvent(const QString &)), this, SLOT(slotNewEventFromKey(const QString &)) ); | 524 | connect( dayView, SIGNAL(sigNewEvent(const QString&)), this, SLOT(slotNewEventFromKey(const QString&)) ); |
525 | } | 525 | } |
526 | } | 526 | } |
527 | 527 | ||
528 | void DateBook::initWeek() | 528 | void DateBook::initWeek() |
529 | { | 529 | { |
530 | if ( !weekView ) { | 530 | if ( !weekView ) { |
531 | weekView = new DateBookWeek( ampm, onMonday, db, views, "week view" ); | 531 | weekView = new DateBookWeek( ampm, onMonday, db, views, "week view" ); |
532 | weekView->setStartViewTime( startTime ); | 532 | weekView->setStartViewTime( startTime ); |
533 | views->addWidget( weekView, WEEK ); | 533 | views->addWidget( weekView, WEEK ); |
534 | connect( weekView, SIGNAL( showDate( int, int, int ) ), this, SLOT( showDay( int, int, int ) ) ); | 534 | connect( weekView, SIGNAL( showDate(int,int,int) ), this, SLOT( showDay(int,int,int) ) ); |
535 | connect( this, SIGNAL( newEvent() ), weekView, SLOT( redraw() ) ); | 535 | connect( this, SIGNAL( newEvent() ), weekView, SLOT( redraw() ) ); |
536 | } | 536 | } |
537 | 537 | ||
538 | //But also get it right: the year that we display can be different | 538 | //But also get it right: the year that we display can be different |
539 | //from the year of the current date. So, first find the year | 539 | //from the year of the current date. So, first find the year |
540 | //number of the current week. | 540 | //number of the current week. |
541 | int yearNumber, totWeeks; | 541 | int yearNumber, totWeeks; |
542 | calcWeek( currentDate(), totWeeks, yearNumber, onMonday ); | 542 | calcWeek( currentDate(), totWeeks, yearNumber, onMonday ); |
543 | 543 | ||
544 | QDate d = QDate( yearNumber, 12, 31 ); | 544 | QDate d = QDate( yearNumber, 12, 31 ); |
545 | calcWeek( d, totWeeks, yearNumber, onMonday ); | 545 | calcWeek( d, totWeeks, yearNumber, onMonday ); |
546 | 546 | ||
547 | while ( totWeeks == 1 ) { | 547 | while ( totWeeks == 1 ) { |
548 | d = d.addDays( -1 ); | 548 | d = d.addDays( -1 ); |
549 | calcWeek( d, totWeeks, yearNumber, onMonday ); | 549 | calcWeek( d, totWeeks, yearNumber, onMonday ); |
550 | } | 550 | } |
551 | } | 551 | } |
552 | 552 | ||
553 | void DateBook::initWeekLst() { | 553 | void DateBook::initWeekLst() { |
554 | if ( !weekLstView ) { | 554 | if ( !weekLstView ) { |
555 | weekLstView = new DateBookWeekLst( ampm, onMonday, db, views, "weeklst view" ); | 555 | weekLstView = new DateBookWeekLst( ampm, onMonday, db, views, "weeklst view" ); |
556 | views->addWidget( weekLstView, WEEKLST ); | 556 | views->addWidget( weekLstView, WEEKLST ); |
557 | 557 | ||
558 | //weekLstView->setStartViewTime( startTime ); | 558 | //weekLstView->setStartViewTime( startTime ); |
559 | connect( weekLstView, SIGNAL( showDate( int, int, int ) ), this, SLOT( showDay( int, int, int ) ) ); | 559 | connect( weekLstView, SIGNAL( showDate(int,int,int) ), this, SLOT( showDay(int,int,int) ) ); |
560 | connect( weekLstView, SIGNAL( addEvent( const QDateTime &, const QDateTime &, const QString & , const QString &) ), | 560 | connect( weekLstView, SIGNAL( addEvent(const QDateTime&,const QDateTime&,const QString&, const QString&) ), |
561 | this, SLOT( slotNewEntry( const QDateTime &, const QDateTime &, const QString & , const QString &) ) ); | 561 | this, SLOT( slotNewEntry(const QDateTime&,const QDateTime&,const QString&, const QString&) ) ); |
562 | connect( this, SIGNAL( newEvent() ), weekLstView, SLOT( redraw() ) ); | 562 | connect( this, SIGNAL( newEvent() ), weekLstView, SLOT( redraw() ) ); |
563 | connect( weekLstView, SIGNAL( editEvent( const Event & ) ), this, SLOT( editEvent( const Event & ) ) ); | 563 | connect( weekLstView, SIGNAL( editEvent(const Event&) ), this, SLOT( editEvent(const Event&) ) ); |
564 | } | 564 | } |
565 | } | 565 | } |
566 | 566 | ||
567 | 567 | ||
568 | void DateBook::initMonth() | 568 | void DateBook::initMonth() |
569 | { | 569 | { |
570 | if ( !monthView ) { | 570 | if ( !monthView ) { |
571 | monthView = new DateBookMonth( views, "month view", FALSE, db ); | 571 | monthView = new DateBookMonth( views, "month view", FALSE, db ); |
572 | views->addWidget( monthView, MONTH ); | 572 | views->addWidget( monthView, MONTH ); |
573 | connect( monthView, SIGNAL( dateClicked( int, int, int ) ), this, SLOT( showDay( int, int, int ) ) ); | 573 | connect( monthView, SIGNAL( dateClicked(int,int,int) ), this, SLOT( showDay(int,int,int) ) ); |
574 | connect( this, SIGNAL( newEvent() ), monthView, SLOT( redraw() ) ); | 574 | connect( this, SIGNAL( newEvent() ), monthView, SLOT( redraw() ) ); |
575 | qApp->processEvents(); | 575 | qApp->processEvents(); |
576 | } | 576 | } |
577 | } | 577 | } |
578 | 578 | ||
579 | void DateBook::loadSettings() | 579 | void DateBook::loadSettings() |
580 | { | 580 | { |
581 | Config qpeconfig( "qpe" ); | 581 | Config qpeconfig( "qpe" ); |
582 | qpeconfig.setGroup("Time"); | 582 | qpeconfig.setGroup("Time"); |
583 | ampm = qpeconfig.readBoolEntry( "AMPM", TRUE ); | 583 | ampm = qpeconfig.readBoolEntry( "AMPM", TRUE ); |
584 | onMonday = qpeconfig.readBoolEntry( "MONDAY" ); | 584 | onMonday = qpeconfig.readBoolEntry( "MONDAY" ); |
585 | 585 | ||
586 | Config config("DateBook"); | 586 | Config config("DateBook"); |
587 | config.setGroup("Main"); | 587 | config.setGroup("Main"); |
588 | startTime = config.readNumEntry("startviewtime", 8); | 588 | startTime = config.readNumEntry("startviewtime", 8); |
589 | aPreset = config.readBoolEntry("alarmpreset"); | 589 | aPreset = config.readBoolEntry("alarmpreset"); |
590 | presetTime = config.readNumEntry("presettime"); | 590 | presetTime = config.readNumEntry("presettime"); |
591 | bJumpToCurTime = config.readBoolEntry("jumptocurtime"); | 591 | bJumpToCurTime = config.readBoolEntry("jumptocurtime"); |
592 | rowStyle = config.readNumEntry("rowstyle"); | 592 | rowStyle = config.readNumEntry("rowstyle"); |
593 | defaultView = config.readNumEntry("defaultview",DAY); | 593 | defaultView = config.readNumEntry("defaultview",DAY); |
594 | weeklistviewconfig = config.readNumEntry("weeklistviewconfig",NORMAL); | 594 | weeklistviewconfig = config.readNumEntry("weeklistviewconfig",NORMAL); |
595 | 595 | ||
596 | defaultLocation=config.readEntry("defaultLocation"); | 596 | defaultLocation=config.readEntry("defaultLocation"); |
597 | QString tmpString=config.readEntry("defaultCategories"); | 597 | QString tmpString=config.readEntry("defaultCategories"); |
598 | QStringList tmpStringList=QStringList::split(",",tmpString); | 598 | QStringList tmpStringList=QStringList::split(",",tmpString); |
599 | defaultCategories.truncate(0); | 599 | defaultCategories.truncate(0); |
600 | 600 | ||
601 | for( QStringList::Iterator i=tmpStringList.begin(); i!=tmpStringList.end(); i++) { | 601 | for( QStringList::Iterator i=tmpStringList.begin(); i!=tmpStringList.end(); i++) { |
602 | defaultCategories.resize(defaultCategories.count()+1); | 602 | defaultCategories.resize(defaultCategories.count()+1); |
603 | defaultCategories[defaultCategories.count()-1]=(*i).toInt(); | 603 | defaultCategories[defaultCategories.count()-1]=(*i).toInt(); |
604 | } | 604 | } |
605 | } | 605 | } |
606 | 606 | ||
607 | void DateBook::saveSettings() | 607 | void DateBook::saveSettings() |
608 | { | 608 | { |
609 | Config config( "qpe" ); | 609 | Config config( "qpe" ); |
610 | Config configDB( "DateBook" ); | 610 | Config configDB( "DateBook" ); |
611 | configDB.setGroup( "Main" ); | 611 | configDB.setGroup( "Main" ); |
612 | configDB.writeEntry("startviewtime",startTime); | 612 | configDB.writeEntry("startviewtime",startTime); |
613 | configDB.writeEntry("alarmpreset",aPreset); | 613 | configDB.writeEntry("alarmpreset",aPreset); |
614 | configDB.writeEntry("presettime",presetTime); | 614 | configDB.writeEntry("presettime",presetTime); |
615 | configDB.writeEntry("jumptocurtime", bJumpToCurTime); | 615 | configDB.writeEntry("jumptocurtime", bJumpToCurTime); |
616 | configDB.writeEntry("rowstyle", rowStyle); | 616 | configDB.writeEntry("rowstyle", rowStyle); |
617 | configDB.writeEntry("defaultview",defaultView); | 617 | configDB.writeEntry("defaultview",defaultView); |
618 | configDB.writeEntry("weeklistviewconfig",weeklistviewconfig); | 618 | configDB.writeEntry("weeklistviewconfig",weeklistviewconfig); |
619 | 619 | ||
620 | configDB.writeEntry("defaultLocation",defaultLocation); | 620 | configDB.writeEntry("defaultLocation",defaultLocation); |
621 | QStringList tmpStringList; | 621 | QStringList tmpStringList; |
622 | for( uint i=0; i<defaultCategories.count(); i++) { | 622 | for( uint i=0; i<defaultCategories.count(); i++) { |
623 | tmpStringList << QString::number(defaultCategories[i]); | 623 | tmpStringList << QString::number(defaultCategories[i]); |
624 | } | 624 | } |
625 | configDB.writeEntry("defaultCategories",tmpStringList.join(",")); | 625 | configDB.writeEntry("defaultCategories",tmpStringList.join(",")); |
626 | } | 626 | } |
627 | 627 | ||
628 | void DateBook::appMessage(const QCString& msg, const QByteArray& data) | 628 | void DateBook::appMessage(const QCString& msg, const QByteArray& data) |
629 | { | 629 | { |
630 | bool needShow = FALSE; | 630 | bool needShow = FALSE; |
631 | if ( msg == "alarm(QDateTime,int)" ) { | 631 | if ( msg == "alarm(QDateTime,int)" ) { |
632 | QDataStream ds(data,IO_ReadOnly); | 632 | QDataStream ds(data,IO_ReadOnly); |
633 | QDateTime when; int warn; | 633 | QDateTime when; int warn; |
634 | ds >> when >> warn; | 634 | ds >> when >> warn; |
635 | 635 | ||
636 | // check to make it's okay to continue, | 636 | // check to make it's okay to continue, |
637 | // this is the case that the time was set ahead, and | 637 | // this is the case that the time was set ahead, and |
638 | // we are forced given a stale alarm... | 638 | // we are forced given a stale alarm... |
639 | QDateTime current = QDateTime::currentDateTime(); | 639 | QDateTime current = QDateTime::currentDateTime(); |
640 | if ( current.time().hour() != when.time().hour() && current.time().minute() != when.time().minute() ) | 640 | if ( current.time().hour() != when.time().hour() && current.time().minute() != when.time().minute() ) |
641 | return; | 641 | return; |
642 | 642 | ||
643 | QValueList<EffectiveEvent> list = db->getEffectiveEvents(when.addSecs(warn*60)); | 643 | QValueList<EffectiveEvent> list = db->getEffectiveEvents(when.addSecs(warn*60)); |
644 | if ( list.count() > 0 ) { | 644 | if ( list.count() > 0 ) { |
645 | QString msg; | 645 | QString msg; |
646 | bool bSound = FALSE; | 646 | bool bSound = FALSE; |
647 | int stopTimer = 0; | 647 | int stopTimer = 0; |
648 | bool found = FALSE; | 648 | bool found = FALSE; |
649 | for ( QValueList<EffectiveEvent>::ConstIterator it=list.begin(); it!=list.end(); ++it ) { | 649 | for ( QValueList<EffectiveEvent>::ConstIterator it=list.begin(); it!=list.end(); ++it ) { |
650 | if ( (*it).event().hasAlarm() ) { | 650 | if ( (*it).event().hasAlarm() ) { |
651 | found = TRUE; | 651 | found = TRUE; |
652 | msg += "<CENTER><B>" + (*it).description() + "</B>" | 652 | msg += "<CENTER><B>" + (*it).description() + "</B>" |
653 | + "<BR>" + (*it).location() + "<BR>" | 653 | + "<BR>" + (*it).location() + "<BR>" |
654 | + TimeString::dateString((*it).event().start(),ampm) | 654 | + TimeString::dateString((*it).event().start(),ampm) |
655 | + (warn | 655 | + (warn |
656 | ? tr(" (in " + QString::number(warn) | 656 | ? tr(" (in " + QString::number(warn) |
657 | + tr(" minutes)")) | 657 | + tr(" minutes)")) |
658 | : QString("")) | 658 | : QString("")) |
659 | + "<BR>" | 659 | + "<BR>" |
660 | + (*it).notes() + "</CENTER>"; | 660 | + (*it).notes() + "</CENTER>"; |
661 | if ( (*it).event().alarmSound() != Event::Silent ) { | 661 | if ( (*it).event().alarmSound() != Event::Silent ) { |
662 | bSound = TRUE; | 662 | bSound = TRUE; |
663 | } | 663 | } |
664 | } | 664 | } |
665 | } | 665 | } |
666 | if ( found ) { | 666 | if ( found ) { |
667 | if ( bSound ) { | 667 | if ( bSound ) { |
668 | Sound::soundAlarm(); | 668 | Sound::soundAlarm(); |
669 | alarmCounter = 0; | 669 | alarmCounter = 0; |
@@ -812,216 +812,214 @@ void DateBook::slotNewEventFromKey( const QString &str ) | |||
812 | { | 812 | { |
813 | if (syncing) { | 813 | if (syncing) { |
814 | QMessageBox::warning( this, tr("Calendar"), | 814 | QMessageBox::warning( this, tr("Calendar"), |
815 | tr( "Can not edit data, currently syncing") ); | 815 | tr( "Can not edit data, currently syncing") ); |
816 | return; | 816 | return; |
817 | } | 817 | } |
818 | 818 | ||
819 | // We get to here from a key pressed in the Day View | 819 | // We get to here from a key pressed in the Day View |
820 | // So we can assume some things. We want the string | 820 | // So we can assume some things. We want the string |
821 | // passed in to be part of the description. | 821 | // passed in to be part of the description. |
822 | QDateTime start, end; | 822 | QDateTime start, end; |
823 | if ( views->visibleWidget() == dayView ) { | 823 | if ( views->visibleWidget() == dayView ) { |
824 | dayView->selectedDates( start, end ); | 824 | dayView->selectedDates( start, end ); |
825 | } else if ( views->visibleWidget() == monthView ) { | 825 | } else if ( views->visibleWidget() == monthView ) { |
826 | QDate d = monthView->selectedDate(); | 826 | QDate d = monthView->selectedDate(); |
827 | start = end = d; | 827 | start = end = d; |
828 | start.setTime( QTime( 10, 0 ) ); | 828 | start.setTime( QTime( 10, 0 ) ); |
829 | end.setTime( QTime( 12, 0 ) ); | 829 | end.setTime( QTime( 12, 0 ) ); |
830 | } else if ( views->visibleWidget() == weekView ) { | 830 | } else if ( views->visibleWidget() == weekView ) { |
831 | QDate d = weekView->date(); | 831 | QDate d = weekView->date(); |
832 | start = end = d; | 832 | start = end = d; |
833 | start.setTime( QTime( 10, 0 ) ); | 833 | start.setTime( QTime( 10, 0 ) ); |
834 | end.setTime( QTime( 12, 0 ) ); | 834 | end.setTime( QTime( 12, 0 ) ); |
835 | } else if ( views->visibleWidget() == weekLstView ) { | 835 | } else if ( views->visibleWidget() == weekLstView ) { |
836 | QDate d = weekLstView->date(); | 836 | QDate d = weekLstView->date(); |
837 | start = end = d; | 837 | start = end = d; |
838 | start.setTime( QTime( 10, 0 ) ); | 838 | start.setTime( QTime( 10, 0 ) ); |
839 | end.setTime( QTime( 12, 0 ) ); | 839 | end.setTime( QTime( 12, 0 ) ); |
840 | } | 840 | } |
841 | slotNewEntry(start, end, str); | 841 | slotNewEntry(start, end, str); |
842 | } | 842 | } |
843 | void DateBook::slotNewEntry(const QDateTime &start, const QDateTime &end, const QString &str, const QString &location) { | 843 | void DateBook::slotNewEntry(const QDateTime &start, const QDateTime &end, const QString &str, const QString &location) { |
844 | // argh! This really needs to be encapsulated in a class | 844 | // argh! This really needs to be encapsulated in a class |
845 | // or function. | 845 | // or function. |
846 | QDialog newDlg( this, 0, TRUE ); | 846 | QDialog newDlg( this, 0, TRUE ); |
847 | newDlg.setCaption( DateEntryBase::tr("New Event") ); | 847 | newDlg.setCaption( DateEntryBase::tr("New Event") ); |
848 | DateEntry *e; | 848 | DateEntry *e; |
849 | QVBoxLayout *vb = new QVBoxLayout( &newDlg ); | 849 | QVBoxLayout *vb = new QVBoxLayout( &newDlg ); |
850 | QScrollView *sv = new QScrollView( &newDlg ); | 850 | QScrollView *sv = new QScrollView( &newDlg ); |
851 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 851 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
852 | sv->setFrameStyle( QFrame::NoFrame ); | 852 | sv->setFrameStyle( QFrame::NoFrame ); |
853 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); | 853 | sv->setHScrollBarMode( QScrollView::AlwaysOff ); |
854 | vb->addWidget( sv ); | 854 | vb->addWidget( sv ); |
855 | 855 | ||
856 | Event ev; | 856 | Event ev; |
857 | ev.setDescription( str ); | 857 | ev.setDescription( str ); |
858 | // When the new gui comes in, change this... | 858 | // When the new gui comes in, change this... |
859 | if(location==0) { | 859 | if(location==0) { |
860 | if(defaultLocation.isEmpty()) { | 860 | if(defaultLocation.isEmpty()) { |
861 | ev.setLocation(tr("(Unknown)")); | 861 | ev.setLocation(tr("(Unknown)")); |
862 | } else { | 862 | } else { |
863 | ev.setLocation( defaultLocation ); | 863 | ev.setLocation( defaultLocation ); |
864 | } | 864 | } |
865 | } else { | 865 | } else { |
866 | ev.setLocation(location); | 866 | ev.setLocation(location); |
867 | } | 867 | } |
868 | ev.setCategories(defaultCategories); | 868 | ev.setCategories(defaultCategories); |
869 | ev.setStart( start ); | 869 | ev.setStart( start ); |
870 | ev.setEnd( end ); | 870 | ev.setEnd( end ); |
871 | 871 | ||
872 | e = new DateEntry( onMonday, ev, ampm, &newDlg ); | 872 | e = new DateEntry( onMonday, ev, ampm, &newDlg ); |
873 | e->setAlarmEnabled( aPreset, presetTime, Event::Loud ); | 873 | e->setAlarmEnabled( aPreset, presetTime, Event::Loud ); |
874 | sv->addChild( e ); | 874 | sv->addChild( e ); |
875 | while ( QPEApplication::execDialog( &newDlg ) ) { | 875 | while ( QPEApplication::execDialog( &newDlg ) ) { |
876 | ev = e->event(); | 876 | ev = e->event(); |
877 | ev.assignUid(); | 877 | ev.assignUid(); |
878 | QString error = checkEvent( ev ); | 878 | QString error = checkEvent( ev ); |
879 | if ( !error.isNull() ) { | 879 | if ( !error.isNull() ) { |
880 | if ( QMessageBox::warning( this, tr("Error!"), error, tr("Fix it"), tr("Continue"), 0, 0, 1 ) == 0 ) | 880 | if ( QMessageBox::warning( this, tr("Error!"), error, tr("Fix it"), tr("Continue"), 0, 0, 1 ) == 0 ) |
881 | continue; | 881 | continue; |
882 | } | 882 | } |
883 | db->addEvent( ev ); | 883 | db->addEvent( ev ); |
884 | emit newEvent(); | 884 | emit newEvent(); |
885 | break; | 885 | break; |
886 | } | 886 | } |
887 | } | 887 | } |
888 | 888 | ||
889 | void DateBook::setDocument( const QString &filename ) | 889 | void DateBook::setDocument( const QString &filename ) |
890 | { | 890 | { |
891 | if ( filename.find(".vcs") != int(filename.length()) - 4 ) return; | 891 | if ( filename.find(".vcs") != int(filename.length()) - 4 ) return; |
892 | 892 | ||
893 | QValueList<Event> tl = Event::readVCalendar( filename ); | 893 | QValueList<Event> tl = Event::readVCalendar( filename ); |
894 | for( QValueList<Event>::Iterator it = tl.begin(); it != tl.end(); ++it ) { | 894 | for( QValueList<Event>::Iterator it = tl.begin(); it != tl.end(); ++it ) { |
895 | db->addEvent( *it ); | 895 | db->addEvent( *it ); |
896 | } | 896 | } |
897 | } | 897 | } |
898 | 898 | ||
899 | static const char * beamfile = "/tmp/obex/event.vcs"; | 899 | static const char * beamfile = "/tmp/obex/event.vcs"; |
900 | 900 | ||
901 | void DateBook::beamEvent( const Event &e ) | 901 | void DateBook::beamEvent( const Event &e ) |
902 | { | 902 | { |
903 | qDebug("trying to beamn"); | 903 | qDebug("trying to beamn"); |
904 | unlink( beamfile ); // delete if exists | 904 | unlink( beamfile ); // delete if exists |
905 | mkdir("/tmp/obex/", 0755); | 905 | mkdir("/tmp/obex/", 0755); |
906 | Event::writeVCalendar( beamfile, e ); | 906 | Event::writeVCalendar( beamfile, e ); |
907 | Ir *ir = new Ir( this ); | 907 | Ir *ir = new Ir( this ); |
908 | connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); | 908 | connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); |
909 | QString description = e.description(); | 909 | QString description = e.description(); |
910 | ir->send( beamfile, description, "text/x-vCalendar" ); | 910 | ir->send( beamfile, description, "text/x-vCalendar" ); |
911 | } | 911 | } |
912 | 912 | ||
913 | void DateBook::beamDone( Ir *ir ) | 913 | void DateBook::beamDone( Ir *ir ) |
914 | { | 914 | { |
915 | delete ir; | 915 | delete ir; |
916 | unlink( beamfile ); | 916 | unlink( beamfile ); |
917 | } | 917 | } |
918 | 918 | ||
919 | void DateBook::slotFind() | 919 | void DateBook::slotFind() |
920 | { | 920 | { |
921 | // move it to the day view... | 921 | // move it to the day view... |
922 | viewDay(); | 922 | viewDay(); |
923 | FindDialog frmFind( "Calendar", this ); // no tr needed | 923 | FindDialog frmFind( "Calendar", this ); // no tr needed |
924 | frmFind.setUseDate( true ); | 924 | frmFind.setUseDate( true ); |
925 | frmFind.setDate( currentDate() ); | 925 | frmFind.setDate( currentDate() ); |
926 | QObject::connect( &frmFind, | 926 | QObject::connect( &frmFind, |
927 | SIGNAL(signalFindClicked(const QString&, const QDate&, | 927 | SIGNAL(signalFindClicked(const QString&,const QDate&,bool,bool,int)), |
928 | bool, bool, int)), | ||
929 | this, | 928 | this, |
930 | SLOT(slotDoFind(const QString&, const QDate&, | 929 | SLOT(slotDoFind(const QString&,const QDate&,bool,bool,int)) ); |
931 | bool, bool, int)) ); | ||
932 | QObject::connect( this, | 930 | QObject::connect( this, |
933 | SIGNAL(signalNotFound()), | 931 | SIGNAL(signalNotFound()), |
934 | &frmFind, | 932 | &frmFind, |
935 | SLOT(slotNotFound()) ); | 933 | SLOT(slotNotFound()) ); |
936 | QObject::connect( this, | 934 | QObject::connect( this, |
937 | SIGNAL(signalWrapAround()), | 935 | SIGNAL(signalWrapAround()), |
938 | &frmFind, | 936 | &frmFind, |
939 | SLOT(slotWrapAround()) ); | 937 | SLOT(slotWrapAround()) ); |
940 | frmFind.move(0,0); | 938 | frmFind.move(0,0); |
941 | frmFind.exec(); | 939 | frmFind.exec(); |
942 | inSearch = false; | 940 | inSearch = false; |
943 | } | 941 | } |
944 | 942 | ||
945 | bool catComp( QArray<int> cats, int category ) | 943 | bool catComp( QArray<int> cats, int category ) |
946 | { | 944 | { |
947 | bool returnMe; | 945 | bool returnMe; |
948 | int i, | 946 | int i, |
949 | count; | 947 | count; |
950 | 948 | ||
951 | count = int(cats.count()); | 949 | count = int(cats.count()); |
952 | returnMe = false; | 950 | returnMe = false; |
953 | if ( (category == -1 && count == 0) || category == -2 ) | 951 | if ( (category == -1 && count == 0) || category == -2 ) |
954 | returnMe = true; | 952 | returnMe = true; |
955 | else { | 953 | else { |
956 | for ( i = 0; i < count; i++ ) { | 954 | for ( i = 0; i < count; i++ ) { |
957 | if ( category == cats[i] ) { | 955 | if ( category == cats[i] ) { |
958 | returnMe = true; | 956 | returnMe = true; |
959 | break; | 957 | break; |
960 | } | 958 | } |
961 | } | 959 | } |
962 | } | 960 | } |
963 | return returnMe; | 961 | return returnMe; |
964 | } | 962 | } |
965 | 963 | ||
966 | 964 | ||
967 | void DateBook::slotDoFind( const QString& txt, const QDate &dt, | 965 | void DateBook::slotDoFind( const QString& txt, const QDate &dt, |
968 | bool caseSensitive, bool /*backwards*/, | 966 | bool caseSensitive, bool /*backwards*/, |
969 | int category ) | 967 | int category ) |
970 | { | 968 | { |
971 | QDateTime dtEnd( QDate(3001, 1, 1), QTime(0, 0, 0) ), | 969 | QDateTime dtEnd( QDate(3001, 1, 1), QTime(0, 0, 0) ), |
972 | next; | 970 | next; |
973 | 971 | ||
974 | QRegExp r( txt ); | 972 | QRegExp r( txt ); |
975 | r.setCaseSensitive( caseSensitive ); | 973 | r.setCaseSensitive( caseSensitive ); |
976 | 974 | ||
977 | 975 | ||
978 | static Event rev, nonrev; | 976 | static Event rev, nonrev; |
979 | if ( !inSearch ) { | 977 | if ( !inSearch ) { |
980 | rev.setStart( QDateTime(QDate(1960, 1, 1), QTime(0, 0, 0)) ); | 978 | rev.setStart( QDateTime(QDate(1960, 1, 1), QTime(0, 0, 0)) ); |
981 | nonrev.setStart( rev.start() ); | 979 | nonrev.setStart( rev.start() ); |
982 | inSearch = true; | 980 | inSearch = true; |
983 | } | 981 | } |
984 | static QDate searchDate = dt; | 982 | static QDate searchDate = dt; |
985 | // if true at the end we will start at the begin again and afterwards | 983 | // if true at the end we will start at the begin again and afterwards |
986 | // we will emit string not found | 984 | // we will emit string not found |
987 | static bool wrapAround = true; | 985 | static bool wrapAround = true; |
988 | bool candidtate; | 986 | bool candidtate; |
989 | candidtate = false; | 987 | candidtate = false; |
990 | 988 | ||
991 | QValueList<Event> repeats = db->getRawRepeats(); | 989 | QValueList<Event> repeats = db->getRawRepeats(); |
992 | 990 | ||
993 | // find the candidate for the first repeat that matches... | 991 | // find the candidate for the first repeat that matches... |
994 | // first check if there can ever be a match and then compute | 992 | // first check if there can ever be a match and then compute |
995 | // the next occurence from start. See if this event is closer | 993 | // the next occurence from start. See if this event is closer |
996 | // to the beginning (start. next < dtEnd) and not smaller then the last | 994 | // to the beginning (start. next < dtEnd) and not smaller then the last |
997 | // result. If we find a canditate we set the dtEnd to the time | 995 | // result. If we find a canditate we set the dtEnd to the time |
998 | // of the ocurrence and rev to this occurence. | 996 | // of the ocurrence and rev to this occurence. |
999 | // set wrap around to true because there might be more events coming | 997 | // set wrap around to true because there might be more events coming |
1000 | // and we're not at the end. | 998 | // and we're not at the end. |
1001 | QValueListConstIterator<Event> it; | 999 | QValueListConstIterator<Event> it; |
1002 | QDate start = dt; | 1000 | QDate start = dt; |
1003 | for ( it = repeats.begin(); it != repeats.end(); ++it ) { | 1001 | for ( it = repeats.begin(); it != repeats.end(); ++it ) { |
1004 | if ( catComp( (*it).categories(), category ) ) { | 1002 | if ( catComp( (*it).categories(), category ) ) { |
1005 | if ( (*it).match( r ) ) { | 1003 | if ( (*it).match( r ) ) { |
1006 | if ( nextOccurance( *it, start, next ) ) { | 1004 | if ( nextOccurance( *it, start, next ) ) { |
1007 | if ( next < dtEnd && !(next <= rev.start() ) ) { | 1005 | if ( next < dtEnd && !(next <= rev.start() ) ) { |
1008 | rev = *it; | 1006 | rev = *it; |
1009 | dtEnd = next; | 1007 | dtEnd = next; |
1010 | rev.setStart( next ); | 1008 | rev.setStart( next ); |
1011 | candidtate = true; | 1009 | candidtate = true; |
1012 | wrapAround = true; | 1010 | wrapAround = true; |
1013 | } | 1011 | } |
1014 | } | 1012 | } |
1015 | } | 1013 | } |
1016 | } | 1014 | } |
1017 | } | 1015 | } |
1018 | 1016 | ||
1019 | // now the for first non repeat... | 1017 | // now the for first non repeat... |
1020 | // dtEnd is set by the previous iteration of repeatingEvents | 1018 | // dtEnd is set by the previous iteration of repeatingEvents |
1021 | // check if we find a closer item. Also set dtEnd to find even | 1019 | // check if we find a closer item. Also set dtEnd to find even |
1022 | // more close occurrence | 1020 | // more close occurrence |
1023 | QValueList<Event> nonRepeats = db->getNonRepeatingEvents( dt, dtEnd.date() ); | 1021 | QValueList<Event> nonRepeats = db->getNonRepeatingEvents( dt, dtEnd.date() ); |
1024 | qHeapSort( nonRepeats.begin(), nonRepeats.end() ); | 1022 | qHeapSort( nonRepeats.begin(), nonRepeats.end() ); |
1025 | for ( it = nonRepeats.begin(); it != nonRepeats.end(); ++it ) { | 1023 | for ( it = nonRepeats.begin(); it != nonRepeats.end(); ++it ) { |
1026 | if ( catComp( (*it).categories(), category ) ) { | 1024 | if ( catComp( (*it).categories(), category ) ) { |
1027 | if ( (*it).start() < dtEnd ) { | 1025 | if ( (*it).start() < dtEnd ) { |
diff --git a/core/pim/datebook/datebookday.cpp b/core/pim/datebook/datebookday.cpp index 751a1da..ca63dc5 100644 --- a/core/pim/datebook/datebookday.cpp +++ b/core/pim/datebook/datebookday.cpp | |||
@@ -115,361 +115,361 @@ void DateBookDayView::moveUp() | |||
115 | scrollBy(0, -20); | 115 | scrollBy(0, -20); |
116 | } | 116 | } |
117 | 117 | ||
118 | void DateBookDayView::moveDown() | 118 | void DateBookDayView::moveDown() |
119 | { | 119 | { |
120 | scrollBy(0, 20); | 120 | scrollBy(0, 20); |
121 | } | 121 | } |
122 | 122 | ||
123 | void DateBookDayView::paintCell( QPainter *p, int, int, const QRect &cr, bool ) | 123 | void DateBookDayView::paintCell( QPainter *p, int, int, const QRect &cr, bool ) |
124 | { | 124 | { |
125 | int w = cr.width(); | 125 | int w = cr.width(); |
126 | int h = cr.height(); | 126 | int h = cr.height(); |
127 | p->fillRect( 0, 0, w, h, colorGroup().brush( QColorGroup::Base ) ); | 127 | p->fillRect( 0, 0, w, h, colorGroup().brush( QColorGroup::Base ) ); |
128 | if ( showGrid() ) { | 128 | if ( showGrid() ) { |
129 | // Draw our lines | 129 | // Draw our lines |
130 | int x2 = w - 1; | 130 | int x2 = w - 1; |
131 | int y2 = h - 1; | 131 | int y2 = h - 1; |
132 | QPen pen( p->pen() ); | 132 | QPen pen( p->pen() ); |
133 | p->setPen( colorGroup().dark() ); | 133 | p->setPen( colorGroup().dark() ); |
134 | p->drawLine( x2, 0, x2, y2 ); | 134 | p->drawLine( x2, 0, x2, y2 ); |
135 | p->drawLine( 0, y2, x2, y2 ); | 135 | p->drawLine( 0, y2, x2, y2 ); |
136 | 136 | ||
137 | p->setPen( colorGroup().midlight() ); | 137 | p->setPen( colorGroup().midlight() ); |
138 | p->drawLine( 0, y2 - h/2, x2, y2 - h/2); | 138 | p->drawLine( 0, y2 - h/2, x2, y2 - h/2); |
139 | 139 | ||
140 | p->setPen( pen ); | 140 | p->setPen( pen ); |
141 | } | 141 | } |
142 | } | 142 | } |
143 | 143 | ||
144 | void DateBookDayView::paintFocus( QPainter *, const QRect & ) | 144 | void DateBookDayView::paintFocus( QPainter *, const QRect & ) |
145 | { | 145 | { |
146 | } | 146 | } |
147 | 147 | ||
148 | void DateBookDayView::resizeEvent( QResizeEvent *e ) | 148 | void DateBookDayView::resizeEvent( QResizeEvent *e ) |
149 | { | 149 | { |
150 | QTable::resizeEvent( e ); | 150 | QTable::resizeEvent( e ); |
151 | columnWidthChanged( 0 ); | 151 | columnWidthChanged( 0 ); |
152 | emit sigColWidthChanged(); | 152 | emit sigColWidthChanged(); |
153 | } | 153 | } |
154 | 154 | ||
155 | void DateBookDayView::keyPressEvent( QKeyEvent *e ) | 155 | void DateBookDayView::keyPressEvent( QKeyEvent *e ) |
156 | { | 156 | { |
157 | QString txt = e->text(); | 157 | QString txt = e->text(); |
158 | if ( !txt.isNull() && txt[0] > ' ' && e->key() < 0x1000 ) { | 158 | if ( !txt.isNull() && txt[0] > ' ' && e->key() < 0x1000 ) { |
159 | // we this is some sort of thing we know about... | 159 | // we this is some sort of thing we know about... |
160 | e->accept(); | 160 | e->accept(); |
161 | emit sigCapturedKey( txt ); | 161 | emit sigCapturedKey( txt ); |
162 | } else { | 162 | } else { |
163 | // I don't know what this key is, do you? | 163 | // I don't know what this key is, do you? |
164 | e->ignore(); | 164 | e->ignore(); |
165 | } | 165 | } |
166 | } | 166 | } |
167 | 167 | ||
168 | void DateBookDayView::setRowStyle( int style ) | 168 | void DateBookDayView::setRowStyle( int style ) |
169 | { | 169 | { |
170 | if (style<0) style = 0; | 170 | if (style<0) style = 0; |
171 | 171 | ||
172 | for (int i=0; i<numRows(); i++) | 172 | for (int i=0; i<numRows(); i++) |
173 | setRowHeight(i, style*10+20); | 173 | setRowHeight(i, style*10+20); |
174 | } | 174 | } |
175 | 175 | ||
176 | void DateBookDayView::contentsMouseReleaseEvent( QMouseEvent* /* e */ ) | 176 | void DateBookDayView::contentsMouseReleaseEvent( QMouseEvent* /* e */ ) |
177 | { | 177 | { |
178 | int sh=99,eh=-1; | 178 | int sh=99,eh=-1; |
179 | 179 | ||
180 | for(int i=0;i<this->numSelections();i++) { | 180 | for(int i=0;i<this->numSelections();i++) { |
181 | QTableSelection sel = this->selection( i ); | 181 | QTableSelection sel = this->selection( i ); |
182 | sh = QMIN(sh,sel.topRow()); | 182 | sh = QMIN(sh,sel.topRow()); |
183 | eh = QMAX(sh,sel.bottomRow()+1); | 183 | eh = QMAX(sh,sel.bottomRow()+1); |
184 | } | 184 | } |
185 | if (sh > 23 || eh < 1) { | 185 | if (sh > 23 || eh < 1) { |
186 | sh=8; | 186 | sh=8; |
187 | eh=9; | 187 | eh=9; |
188 | } | 188 | } |
189 | 189 | ||
190 | quickLineEdit=new DateBookDayViewQuickLineEdit(QDateTime(currDate,QTime(sh,0,0,0)),QDateTime(currDate,QTime(eh,0,0,0)),this->viewport(),"quickedit"); | 190 | quickLineEdit=new DateBookDayViewQuickLineEdit(QDateTime(currDate,QTime(sh,0,0,0)),QDateTime(currDate,QTime(eh,0,0,0)),this->viewport(),"quickedit"); |
191 | quickLineEdit->setGeometry(0,0,this->columnWidth(0)-1,this->rowHeight(0)); | 191 | quickLineEdit->setGeometry(0,0,this->columnWidth(0)-1,this->rowHeight(0)); |
192 | this->moveChild(quickLineEdit,0,sh*this->rowHeight(0)); | 192 | this->moveChild(quickLineEdit,0,sh*this->rowHeight(0)); |
193 | quickLineEdit->setFocus(); | 193 | quickLineEdit->setFocus(); |
194 | quickLineEdit->show(); | 194 | quickLineEdit->show(); |
195 | } | 195 | } |
196 | 196 | ||
197 | //=========================================================================== | 197 | //=========================================================================== |
198 | 198 | ||
199 | DateBookDayViewQuickLineEdit::DateBookDayViewQuickLineEdit(const QDateTime &start, const QDateTime &end,QWidget * parent, const char *name) : QLineEdit(parent,name) | 199 | DateBookDayViewQuickLineEdit::DateBookDayViewQuickLineEdit(const QDateTime &start, const QDateTime &end,QWidget * parent, const char *name) : QLineEdit(parent,name) |
200 | { | 200 | { |
201 | active=1; | 201 | active=1; |
202 | quickEvent.setStart(start); | 202 | quickEvent.setStart(start); |
203 | quickEvent.setEnd(end); | 203 | quickEvent.setEnd(end); |
204 | connect(this,SIGNAL(returnPressed()),this,SLOT(slotReturnPressed())); | 204 | connect(this,SIGNAL(returnPressed()),this,SLOT(slotReturnPressed())); |
205 | } | 205 | } |
206 | 206 | ||
207 | void DateBookDayViewQuickLineEdit::slotReturnPressed() | 207 | void DateBookDayViewQuickLineEdit::slotReturnPressed() |
208 | { | 208 | { |
209 | if(active && (!this->text().isEmpty())) {// Fix to avoid having this event beeing added multiple times. | 209 | if(active && (!this->text().isEmpty())) {// Fix to avoid having this event beeing added multiple times. |
210 | quickEvent.setDescription(this->text()); | 210 | quickEvent.setDescription(this->text()); |
211 | connect(this,SIGNAL(insertEvent(const Event &)),this->topLevelWidget(),SLOT(insertEvent(const Event &))); | 211 | connect(this,SIGNAL(insertEvent(const Event&)),this->topLevelWidget(),SLOT(insertEvent(const Event&))); |
212 | emit(insertEvent(quickEvent)); | 212 | emit(insertEvent(quickEvent)); |
213 | active=0; | 213 | active=0; |
214 | } | 214 | } |
215 | /* we need to return to this object.. */ | 215 | /* we need to return to this object.. */ |
216 | QTimer::singleShot(500, this, SLOT(finallyCallClose()) );// Close and also delete this widget | 216 | QTimer::singleShot(500, this, SLOT(finallyCallClose()) );// Close and also delete this widget |
217 | } | 217 | } |
218 | void DateBookDayViewQuickLineEdit::finallyCallClose() { | 218 | void DateBookDayViewQuickLineEdit::finallyCallClose() { |
219 | close(true); // also deletes this widget... | 219 | close(true); // also deletes this widget... |
220 | } | 220 | } |
221 | 221 | ||
222 | void DateBookDayViewQuickLineEdit::focusOutEvent ( QFocusEvent* /* e */) | 222 | void DateBookDayViewQuickLineEdit::focusOutEvent ( QFocusEvent* /* e */) |
223 | { | 223 | { |
224 | slotReturnPressed(); // Reuse code to add event and close this widget. | 224 | slotReturnPressed(); // Reuse code to add event and close this widget. |
225 | } | 225 | } |
226 | 226 | ||
227 | //=========================================================================== | 227 | //=========================================================================== |
228 | 228 | ||
229 | DateBookDay::DateBookDay( bool ampm, bool startOnMonday, DateBookDB *newDb, QWidget *parent, const char *name ) | 229 | DateBookDay::DateBookDay( bool ampm, bool startOnMonday, DateBookDB *newDb, QWidget *parent, const char *name ) |
230 | : QVBox( parent, name ), currDate( QDate::currentDate() ), db( newDb ), startTime( 0 ) | 230 | : QVBox( parent, name ), currDate( QDate::currentDate() ), db( newDb ), startTime( 0 ) |
231 | { | 231 | { |
232 | widgetList.setAutoDelete( true ); | 232 | widgetList.setAutoDelete( true ); |
233 | header = new DateBookDayHeader( startOnMonday, this, "day header" ); | 233 | header = new DateBookDayHeader( startOnMonday, this, "day header" ); |
234 | header->setDate( currDate.year(), currDate.month(), currDate.day() ); | 234 | header->setDate( currDate.year(), currDate.month(), currDate.day() ); |
235 | 235 | ||
236 | m_allDays = new DatebookdayAllday(newDb, this, "all day event list" ); | 236 | m_allDays = new DatebookdayAllday(newDb, this, "all day event list" ); |
237 | m_allDays->hide(); | 237 | m_allDays->hide(); |
238 | 238 | ||
239 | view = new DateBookDayView( ampm, this, "day view" ); | 239 | view = new DateBookDayView( ampm, this, "day view" ); |
240 | 240 | ||
241 | connect( header, SIGNAL( dateChanged( int, int, int ) ), this, SLOT( dateChanged( int, int, int ) ) ); | 241 | connect( header, SIGNAL( dateChanged(int,int,int) ), this, SLOT( dateChanged(int,int,int) ) ); |
242 | connect( header, SIGNAL( dateChanged( int, int, int ) ), view, SLOT( slotDateChanged( int, int, int ) ) ); | 242 | connect( header, SIGNAL( dateChanged(int,int,int) ), view, SLOT( slotDateChanged(int,int,int) ) ); |
243 | connect( view, SIGNAL( sigColWidthChanged() ), this, SLOT( slotColWidthChanged() ) ); | 243 | connect( view, SIGNAL( sigColWidthChanged() ), this, SLOT( slotColWidthChanged() ) ); |
244 | connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotWeekChanged(bool)) ); | 244 | connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotWeekChanged(bool)) ); |
245 | connect( view, SIGNAL(sigCapturedKey(const QString &)), this, SIGNAL(sigNewEvent(const QString&)) ); | 245 | connect( view, SIGNAL(sigCapturedKey(const QString&)), this, SIGNAL(sigNewEvent(const QString&)) ); |
246 | 246 | ||
247 | QTimer *timer = new QTimer( this ); | 247 | QTimer *timer = new QTimer( this ); |
248 | 248 | ||
249 | connect( timer, SIGNAL(timeout()), this, SLOT(updateView()) );//connect timer for updating timeMarker & daywidgetcolors | 249 | connect( timer, SIGNAL(timeout()), this, SLOT(updateView()) );//connect timer for updating timeMarker & daywidgetcolors |
250 | timer->start( 1000*60*5, FALSE ); //update every 5min | 250 | timer->start( 1000*60*5, FALSE ); //update every 5min |
251 | 251 | ||
252 | selectedWidget = 0; | 252 | selectedWidget = 0; |
253 | 253 | ||
254 | timeMarker = new DateBookDayTimeMarker( this ); | 254 | timeMarker = new DateBookDayTimeMarker( this ); |
255 | timeMarker->setTime( QTime::currentTime() ); | 255 | timeMarker->setTime( QTime::currentTime() ); |
256 | rowStyle = -1; // initialize with bogus values | 256 | rowStyle = -1; // initialize with bogus values |
257 | jumpToCurTime = false; | 257 | jumpToCurTime = false; |
258 | } | 258 | } |
259 | 259 | ||
260 | void DateBookDay::setJumpToCurTime( bool bJump ) | 260 | void DateBookDay::setJumpToCurTime( bool bJump ) |
261 | { | 261 | { |
262 | jumpToCurTime = bJump; | 262 | jumpToCurTime = bJump; |
263 | } | 263 | } |
264 | 264 | ||
265 | void DateBookDay::setRowStyle( int style ) | 265 | void DateBookDay::setRowStyle( int style ) |
266 | { | 266 | { |
267 | if (rowStyle != style) view->setRowStyle( style ); | 267 | if (rowStyle != style) view->setRowStyle( style ); |
268 | rowStyle = style; | 268 | rowStyle = style; |
269 | } | 269 | } |
270 | 270 | ||
271 | void DateBookDay::updateView( void ) | 271 | void DateBookDay::updateView( void ) |
272 | { | 272 | { |
273 | timeMarker->setTime( QTime::currentTime() ); | 273 | timeMarker->setTime( QTime::currentTime() ); |
274 | //need to find a way to update all DateBookDayWidgets | 274 | //need to find a way to update all DateBookDayWidgets |
275 | } | 275 | } |
276 | 276 | ||
277 | void DateBookDay::setSelectedWidget( DateBookDayWidget *w ) | 277 | void DateBookDay::setSelectedWidget( DateBookDayWidget *w ) |
278 | { | 278 | { |
279 | selectedWidget = w; | 279 | selectedWidget = w; |
280 | } | 280 | } |
281 | 281 | ||
282 | DateBookDayWidget * DateBookDay::getSelectedWidget( void ) | 282 | DateBookDayWidget * DateBookDay::getSelectedWidget( void ) |
283 | { | 283 | { |
284 | return selectedWidget; | 284 | return selectedWidget; |
285 | } | 285 | } |
286 | 286 | ||
287 | void DateBookDay::selectedDates( QDateTime &start, QDateTime &end ) | 287 | void DateBookDay::selectedDates( QDateTime &start, QDateTime &end ) |
288 | { | 288 | { |
289 | start.setDate( currDate ); | 289 | start.setDate( currDate ); |
290 | end.setDate( currDate ); | 290 | end.setDate( currDate ); |
291 | 291 | ||
292 | int sh=99,eh=-1; | 292 | int sh=99,eh=-1; |
293 | 293 | ||
294 | int n = dayView()->numSelections(); | 294 | int n = dayView()->numSelections(); |
295 | 295 | ||
296 | for (int i=0; i<n; i++) { | 296 | for (int i=0; i<n; i++) { |
297 | QTableSelection sel = dayView()->selection( i ); | 297 | QTableSelection sel = dayView()->selection( i ); |
298 | sh = QMIN(sh,sel.topRow()); | 298 | sh = QMIN(sh,sel.topRow()); |
299 | eh = QMAX(sh,sel.bottomRow()+1); | 299 | eh = QMAX(sh,sel.bottomRow()+1); |
300 | } | 300 | } |
301 | 301 | ||
302 | if (sh > 23 || eh < 1) { | 302 | if (sh > 23 || eh < 1) { |
303 | sh=8; | 303 | sh=8; |
304 | eh=9; | 304 | eh=9; |
305 | } | 305 | } |
306 | 306 | ||
307 | start.setTime( QTime( sh, 0, 0 ) ); | 307 | start.setTime( QTime( sh, 0, 0 ) ); |
308 | end.setTime( QTime( eh, 0, 0 ) ); | 308 | end.setTime( QTime( eh, 0, 0 ) ); |
309 | } | 309 | } |
310 | 310 | ||
311 | void DateBookDay::setDate( int y, int m, int d ) | 311 | void DateBookDay::setDate( int y, int m, int d ) |
312 | { | 312 | { |
313 | header->setDate( y, m, d ); | 313 | header->setDate( y, m, d ); |
314 | selectedWidget = 0; | 314 | selectedWidget = 0; |
315 | } | 315 | } |
316 | 316 | ||
317 | void DateBookDay::setDate( QDate d) | 317 | void DateBookDay::setDate( QDate d) |
318 | { | 318 | { |
319 | header->setDate( d.year(), d.month(), d.day() ); | 319 | header->setDate( d.year(), d.month(), d.day() ); |
320 | selectedWidget = 0; | 320 | selectedWidget = 0; |
321 | } | 321 | } |
322 | 322 | ||
323 | void DateBookDay::dateChanged( int y, int m, int d ) | 323 | void DateBookDay::dateChanged( int y, int m, int d ) |
324 | { | 324 | { |
325 | QDate date( y, m, d ); | 325 | QDate date( y, m, d ); |
326 | if ( currDate == date ) | 326 | if ( currDate == date ) |
327 | return; | 327 | return; |
328 | currDate.setYMD( y, m, d ); | 328 | currDate.setYMD( y, m, d ); |
329 | relayoutPage(); | 329 | relayoutPage(); |
330 | dayView()->clearSelection(); | 330 | dayView()->clearSelection(); |
331 | QTableSelection ts; | 331 | QTableSelection ts; |
332 | 332 | ||
333 | if (jumpToCurTime && this->date() == QDate::currentDate()) | 333 | if (jumpToCurTime && this->date() == QDate::currentDate()) |
334 | { | 334 | { |
335 | ts.init( QTime::currentTime().hour(), 0); | 335 | ts.init( QTime::currentTime().hour(), 0); |
336 | ts.expandTo( QTime::currentTime().hour(), 0); | 336 | ts.expandTo( QTime::currentTime().hour(), 0); |
337 | } else { | 337 | } else { |
338 | ts.init( startTime, 0 ); | 338 | ts.init( startTime, 0 ); |
339 | ts.expandTo( startTime, 0 ); | 339 | ts.expandTo( startTime, 0 ); |
340 | } | 340 | } |
341 | 341 | ||
342 | dayView()->addSelection( ts ); | 342 | dayView()->addSelection( ts ); |
343 | selectedWidget = 0; | 343 | selectedWidget = 0; |
344 | } | 344 | } |
345 | 345 | ||
346 | void DateBookDay::redraw() | 346 | void DateBookDay::redraw() |
347 | { | 347 | { |
348 | if ( isUpdatesEnabled() ) | 348 | if ( isUpdatesEnabled() ) |
349 | relayoutPage(); | 349 | relayoutPage(); |
350 | } | 350 | } |
351 | 351 | ||
352 | void DateBookDay::getEvents() | 352 | void DateBookDay::getEvents() |
353 | { | 353 | { |
354 | widgetList.clear(); | 354 | widgetList.clear(); |
355 | 355 | ||
356 | /* clear the AllDay List */ | 356 | /* clear the AllDay List */ |
357 | m_allDays->hide(); // just in case | 357 | m_allDays->hide(); // just in case |
358 | m_allDays->removeAllEvents(); | 358 | m_allDays->removeAllEvents(); |
359 | 359 | ||
360 | QValueList<EffectiveEvent> eventList = db->getEffectiveEvents( currDate, currDate ); | 360 | QValueList<EffectiveEvent> eventList = db->getEffectiveEvents( currDate, currDate ); |
361 | QValueListIterator<EffectiveEvent> it; | 361 | QValueListIterator<EffectiveEvent> it; |
362 | QObject* object = 0; | 362 | QObject* object = 0; |
363 | for ( it = eventList.begin(); it != eventList.end(); ++it ) { | 363 | for ( it = eventList.begin(); it != eventList.end(); ++it ) { |
364 | EffectiveEvent ev=*it; | 364 | EffectiveEvent ev=*it; |
365 | if(!((ev.end().hour()==0) && (ev.end().minute()==0) && (ev.startDate()!=ev.date()))) {// Skip events ending at 00:00 starting at another day. | 365 | if(!((ev.end().hour()==0) && (ev.end().minute()==0) && (ev.startDate()!=ev.date()))) {// Skip events ending at 00:00 starting at another day. |
366 | if (ev.event().type() == Event::AllDay ) { | 366 | if (ev.event().type() == Event::AllDay ) { |
367 | object = m_allDays->addEvent( ev ); | 367 | object = m_allDays->addEvent( ev ); |
368 | if (!object) | 368 | if (!object) |
369 | continue; | 369 | continue; |
370 | }else { | 370 | }else { |
371 | DateBookDayWidget* w = new DateBookDayWidget( *it, this ); | 371 | DateBookDayWidget* w = new DateBookDayWidget( *it, this ); |
372 | widgetList.append( w ); | 372 | widgetList.append( w ); |
373 | object = w; | 373 | object = w; |
374 | } | 374 | } |
375 | 375 | ||
376 | connect( object, SIGNAL( deleteMe( const Event & ) ), this, SIGNAL( removeEvent( const Event & ) ) ); | 376 | connect( object, SIGNAL( deleteMe(const Event&) ), this, SIGNAL( removeEvent(const Event&) ) ); |
377 | connect( object, SIGNAL( duplicateMe( const Event & ) ), this, SIGNAL( duplicateEvent( const Event & ) ) ); | 377 | connect( object, SIGNAL( duplicateMe(const Event&) ), this, SIGNAL( duplicateEvent(const Event&) ) ); |
378 | connect( object, SIGNAL( editMe( const Event & ) ), this, SIGNAL( editEvent( const Event & ) ) ); | 378 | connect( object, SIGNAL( editMe(const Event&) ), this, SIGNAL( editEvent(const Event&) ) ); |
379 | connect( object, SIGNAL( beamMe( const Event & ) ), this, SIGNAL( beamEvent( const Event & ) ) ); | 379 | connect( object, SIGNAL( beamMe(const Event&) ), this, SIGNAL( beamEvent(const Event&) ) ); |
380 | 380 | ||
381 | } | 381 | } |
382 | } | 382 | } |
383 | } | 383 | } |
384 | 384 | ||
385 | static int place( const DateBookDayWidget *item, bool *used, int maxn ) | 385 | static int place( const DateBookDayWidget *item, bool *used, int maxn ) |
386 | { | 386 | { |
387 | int place = 0; | 387 | int place = 0; |
388 | int start = item->event().start().hour(); | 388 | int start = item->event().start().hour(); |
389 | QTime e = item->event().end(); | 389 | QTime e = item->event().end(); |
390 | int end = e.hour(); | 390 | int end = e.hour(); |
391 | if ( e.minute() < 5 ) | 391 | if ( e.minute() < 5 ) |
392 | end--; | 392 | end--; |
393 | if ( end < start ) | 393 | if ( end < start ) |
394 | end = start; | 394 | end = start; |
395 | while ( place < maxn ) { | 395 | while ( place < maxn ) { |
396 | bool free = TRUE; | 396 | bool free = TRUE; |
397 | int s = start; | 397 | int s = start; |
398 | while( s <= end ) { | 398 | while( s <= end ) { |
399 | if ( used[10*s+place] ) { | 399 | if ( used[10*s+place] ) { |
400 | free = FALSE; | 400 | free = FALSE; |
401 | break; | 401 | break; |
402 | } | 402 | } |
403 | s++; | 403 | s++; |
404 | } | 404 | } |
405 | if ( free ) | 405 | if ( free ) |
406 | break; | 406 | break; |
407 | place++; | 407 | place++; |
408 | } | 408 | } |
409 | if ( place == maxn ) { | 409 | if ( place == maxn ) { |
410 | return -1; | 410 | return -1; |
411 | } | 411 | } |
412 | while( start <= end ) { | 412 | while( start <= end ) { |
413 | used[10*start+place] = TRUE; | 413 | used[10*start+place] = TRUE; |
414 | start++; | 414 | start++; |
415 | } | 415 | } |
416 | return place; | 416 | return place; |
417 | } | 417 | } |
418 | 418 | ||
419 | 419 | ||
420 | void DateBookDay::relayoutPage( bool fromResize ) | 420 | void DateBookDay::relayoutPage( bool fromResize ) |
421 | { | 421 | { |
422 | setUpdatesEnabled( FALSE ); | 422 | setUpdatesEnabled( FALSE ); |
423 | if ( !fromResize ) { | 423 | if ( !fromResize ) { |
424 | getEvents(); // no need we already have them! | 424 | getEvents(); // no need we already have them! |
425 | 425 | ||
426 | if (m_allDays->items() > 0 ) | 426 | if (m_allDays->items() > 0 ) |
427 | m_allDays->show(); | 427 | m_allDays->show(); |
428 | /* | 428 | /* |
429 | * else if ( m_allDays->items() == 0 ) already hide in getEvents | 429 | * else if ( m_allDays->items() == 0 ) already hide in getEvents |
430 | */ | 430 | */ |
431 | } | 431 | } |
432 | 432 | ||
433 | widgetList.sort(); | 433 | widgetList.sort(); |
434 | //sorts the widgetList by the heights of the widget so that the tallest widgets are at the beginning | 434 | //sorts the widgetList by the heights of the widget so that the tallest widgets are at the beginning |
435 | //this is needed for the simple algo below to work correctly, otherwise some widgets would be drawn outside the view | 435 | //this is needed for the simple algo below to work correctly, otherwise some widgets would be drawn outside the view |
436 | 436 | ||
437 | int wCount = widgetList.count(); | 437 | int wCount = widgetList.count(); |
438 | int wid = view->columnWidth(0)-1; | 438 | int wid = view->columnWidth(0)-1; |
439 | int wd; | 439 | int wd; |
440 | int n = 1; | 440 | int n = 1; |
441 | 441 | ||
442 | QArray<int> anzIntersect(wCount); //this stores the number of maximal intersections of each widget | 442 | QArray<int> anzIntersect(wCount); //this stores the number of maximal intersections of each widget |
443 | 443 | ||
444 | for (int i = 0; i<wCount; anzIntersect[i] = 1, i++); | 444 | for (int i = 0; i<wCount; anzIntersect[i] = 1, i++); |
445 | 445 | ||
446 | if ( wCount < 20 ) { | 446 | if ( wCount < 20 ) { |
447 | 447 | ||
448 | QArray<QRect> geometries(wCount); | 448 | QArray<QRect> geometries(wCount); |
449 | for (int i = 0; i < wCount; geometries[i] = widgetList.at(i)->geometry(), i++);//stores geometry for each widget in vector | 449 | for (int i = 0; i < wCount; geometries[i] = widgetList.at(i)->geometry(), i++);//stores geometry for each widget in vector |
450 | 450 | ||
451 | for ( int i = 0; i < wCount; i++) { | 451 | for ( int i = 0; i < wCount; i++) { |
452 | QValueList<int> intersectedWidgets; | 452 | QValueList<int> intersectedWidgets; |
453 | 453 | ||
454 | //find all widgets intersecting with widgetList.at(i) | 454 | //find all widgets intersecting with widgetList.at(i) |
455 | for ( int j = 0; j < wCount; j++) { | 455 | for ( int j = 0; j < wCount; j++) { |
456 | if (i != j) | 456 | if (i != j) |
457 | if (geometries[j].intersects(geometries[i])) | 457 | if (geometries[j].intersects(geometries[i])) |
458 | intersectedWidgets.append(j); | 458 | intersectedWidgets.append(j); |
459 | } | 459 | } |
460 | 460 | ||
461 | //for each of these intersecting widgets find out how many widgets are they intersecting with | 461 | //for each of these intersecting widgets find out how many widgets are they intersecting with |
462 | for ( uint j = 0; j < intersectedWidgets.count(); j++) | 462 | for ( uint j = 0; j < intersectedWidgets.count(); j++) |
463 | { | 463 | { |
464 | QArray<int> inter(wCount); | 464 | QArray<int> inter(wCount); |
465 | inter[j]=1; | 465 | inter[j]=1; |
466 | 466 | ||
467 | if (intersectedWidgets[j] != -1) | 467 | if (intersectedWidgets[j] != -1) |
468 | for ( uint k = j; k < intersectedWidgets.count(); k++) { | 468 | for ( uint k = j; k < intersectedWidgets.count(); k++) { |
469 | if (j != k && intersectedWidgets[k] != -1) | 469 | if (j != k && intersectedWidgets[k] != -1) |
470 | if (geometries[intersectedWidgets[k]].intersects(geometries[intersectedWidgets[j]])) { | 470 | if (geometries[intersectedWidgets[k]].intersects(geometries[intersectedWidgets[j]])) { |
471 | inter[j]++; | 471 | inter[j]++; |
472 | intersectedWidgets[k] = -1; | 472 | intersectedWidgets[k] = -1; |
473 | } | 473 | } |
474 | if (inter[j] > anzIntersect[i]) anzIntersect[i] = inter[j] + 1; | 474 | if (inter[j] > anzIntersect[i]) anzIntersect[i] = inter[j] + 1; |
475 | } | 475 | } |
diff --git a/core/pim/datebook/datebookdayallday.cpp b/core/pim/datebook/datebookdayallday.cpp index d43d31a..a0aefd3 100644 --- a/core/pim/datebook/datebookdayallday.cpp +++ b/core/pim/datebook/datebookdayallday.cpp | |||
@@ -1,159 +1,159 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | ** GPL by Rajko Albrecht | 2 | ** GPL by Rajko Albrecht |
3 | ** | 3 | ** |
4 | ** | 4 | ** |
5 | ** | 5 | ** |
6 | ** | 6 | ** |
7 | ** | 7 | ** |
8 | ****************************************************************************/ | 8 | ****************************************************************************/ |
9 | #include "datebookdayallday.h" | 9 | #include "datebookdayallday.h" |
10 | 10 | ||
11 | #include <qlayout.h> | 11 | #include <qlayout.h> |
12 | #include <qpe/ir.h> | 12 | #include <qpe/ir.h> |
13 | #include <qpopupmenu.h> | 13 | #include <qpopupmenu.h> |
14 | #include <qtimer.h> | 14 | #include <qtimer.h> |
15 | 15 | ||
16 | #include "datebookday.h" | 16 | #include "datebookday.h" |
17 | 17 | ||
18 | /* | 18 | /* |
19 | * Constructs a DatebookdayAllday which is a child of 'parent', with the | 19 | * Constructs a DatebookdayAllday which is a child of 'parent', with the |
20 | * name 'name' and widget flags set to 'f' | 20 | * name 'name' and widget flags set to 'f' |
21 | */ | 21 | */ |
22 | DatebookdayAllday::DatebookdayAllday(DateBookDB* db, QWidget* parent, const char* name, WFlags ) | 22 | DatebookdayAllday::DatebookdayAllday(DateBookDB* db, QWidget* parent, const char* name, WFlags ) |
23 | : QScrollView( parent, name ),item_count(0),dateBook(db) | 23 | : QScrollView( parent, name ),item_count(0),dateBook(db) |
24 | { | 24 | { |
25 | if ( !name ) | 25 | if ( !name ) |
26 | setName( "DatebookdayAllday" ); | 26 | setName( "DatebookdayAllday" ); |
27 | setMinimumSize( QSize( 0, 0 ) ); | 27 | setMinimumSize( QSize( 0, 0 ) ); |
28 | setMaximumHeight(3* (QFontMetrics(font()).height()+4) ); | 28 | setMaximumHeight(3* (QFontMetrics(font()).height()+4) ); |
29 | 29 | ||
30 | m_MainFrame = new QFrame(viewport()); | 30 | m_MainFrame = new QFrame(viewport()); |
31 | m_MainFrame->setFrameStyle(QFrame::NoFrame|QFrame::Plain); | 31 | m_MainFrame->setFrameStyle(QFrame::NoFrame|QFrame::Plain); |
32 | setFrameStyle(QFrame::NoFrame|QFrame::Plain); | 32 | setFrameStyle(QFrame::NoFrame|QFrame::Plain); |
33 | setResizePolicy( QScrollView::Default ); | 33 | setResizePolicy( QScrollView::Default ); |
34 | setHScrollBarMode( AlwaysOff ); | 34 | setHScrollBarMode( AlwaysOff ); |
35 | addChild(m_MainFrame); | 35 | addChild(m_MainFrame); |
36 | 36 | ||
37 | datebookdayalldayLayout = new QVBoxLayout( m_MainFrame ); | 37 | datebookdayalldayLayout = new QVBoxLayout( m_MainFrame ); |
38 | datebookdayalldayLayout->setSpacing( 0 ); | 38 | datebookdayalldayLayout->setSpacing( 0 ); |
39 | datebookdayalldayLayout->setMargin( 0 ); | 39 | datebookdayalldayLayout->setMargin( 0 ); |
40 | 40 | ||
41 | lblDesc = new DatebookEventDesc(parent->parentWidget(),""); | 41 | lblDesc = new DatebookEventDesc(parent->parentWidget(),""); |
42 | lblDesc->setBackgroundColor(Qt::yellow); | 42 | lblDesc->setBackgroundColor(Qt::yellow); |
43 | lblDesc->hide(); | 43 | lblDesc->hide(); |
44 | subWidgets.setAutoDelete(true); | 44 | subWidgets.setAutoDelete(true); |
45 | } | 45 | } |
46 | 46 | ||
47 | /* | 47 | /* |
48 | * Destroys the object and frees any allocated resources | 48 | * Destroys the object and frees any allocated resources |
49 | */ | 49 | */ |
50 | DatebookdayAllday::~DatebookdayAllday() | 50 | DatebookdayAllday::~DatebookdayAllday() |
51 | { | 51 | { |
52 | // no need to delete child widgets, Qt does it all for us | 52 | // no need to delete child widgets, Qt does it all for us |
53 | } | 53 | } |
54 | 54 | ||
55 | DatebookAlldayDisp* DatebookdayAllday::addEvent(const EffectiveEvent&ev) | 55 | DatebookAlldayDisp* DatebookdayAllday::addEvent(const EffectiveEvent&ev) |
56 | { | 56 | { |
57 | DatebookAlldayDisp * lb; | 57 | DatebookAlldayDisp * lb; |
58 | lb = new DatebookAlldayDisp(dateBook,ev,m_MainFrame,NULL); | 58 | lb = new DatebookAlldayDisp(dateBook,ev,m_MainFrame,NULL); |
59 | lb->show(); | 59 | lb->show(); |
60 | datebookdayalldayLayout->addWidget(lb); | 60 | datebookdayalldayLayout->addWidget(lb); |
61 | subWidgets.append(lb); | 61 | subWidgets.append(lb); |
62 | 62 | ||
63 | connect(lb,SIGNAL(displayMe(const Event &)),lblDesc,SLOT(disp_event(const Event&))); | 63 | connect(lb,SIGNAL(displayMe(const Event&)),lblDesc,SLOT(disp_event(const Event&))); |
64 | ++item_count; | 64 | ++item_count; |
65 | 65 | ||
66 | return lb; | 66 | return lb; |
67 | } | 67 | } |
68 | 68 | ||
69 | void DatebookdayAllday::removeAllEvents() | 69 | void DatebookdayAllday::removeAllEvents() |
70 | { | 70 | { |
71 | subWidgets.clear(); | 71 | subWidgets.clear(); |
72 | item_count = 0; | 72 | item_count = 0; |
73 | } | 73 | } |
74 | 74 | ||
75 | DatebookAlldayDisp::DatebookAlldayDisp(DateBookDB *db,const EffectiveEvent& ev, | 75 | DatebookAlldayDisp::DatebookAlldayDisp(DateBookDB *db,const EffectiveEvent& ev, |
76 | QWidget* parent,const char* name,WFlags f) | 76 | QWidget* parent,const char* name,WFlags f) |
77 | : QLabel(parent,name,f),m_Ev(ev),dateBook(db) | 77 | : QLabel(parent,name,f),m_Ev(ev),dateBook(db) |
78 | { | 78 | { |
79 | QString strDesc = m_Ev.description(); | 79 | QString strDesc = m_Ev.description(); |
80 | strDesc = strDesc.replace(QRegExp("<"),"<"); | 80 | strDesc = strDesc.replace(QRegExp("<"),"<"); |
81 | setBackgroundColor(yellow); | 81 | setBackgroundColor(yellow); |
82 | setText(strDesc); | 82 | setText(strDesc); |
83 | setFrameStyle(QFrame::Raised|QFrame::Panel); | 83 | setFrameStyle(QFrame::Raised|QFrame::Panel); |
84 | 84 | ||
85 | int s = QFontMetrics(font()).height()+4; | 85 | int s = QFontMetrics(font()).height()+4; |
86 | setMaximumHeight( s ); | 86 | setMaximumHeight( s ); |
87 | setMinimumSize( QSize( 0, s ) ); | 87 | setMinimumSize( QSize( 0, s ) ); |
88 | } | 88 | } |
89 | 89 | ||
90 | DatebookAlldayDisp::~DatebookAlldayDisp() | 90 | DatebookAlldayDisp::~DatebookAlldayDisp() |
91 | { | 91 | { |
92 | } | 92 | } |
93 | 93 | ||
94 | void DatebookAlldayDisp::beam_single_event() | 94 | void DatebookAlldayDisp::beam_single_event() |
95 | { | 95 | { |
96 | // create an Event and beam it... | 96 | // create an Event and beam it... |
97 | /* | 97 | /* |
98 | * Start with the easy stuff. If start and end date is the same we can just use | 98 | * Start with the easy stuff. If start and end date is the same we can just use |
99 | * the values of effective m_Events | 99 | * the values of effective m_Events |
100 | * If it is a multi day m_Event we need to find the real start and end date... | 100 | * If it is a multi day m_Event we need to find the real start and end date... |
101 | */ | 101 | */ |
102 | if ( m_Ev.event().start().date() == m_Ev.event().end().date() ) { | 102 | if ( m_Ev.event().start().date() == m_Ev.event().end().date() ) { |
103 | Event m_Event( m_Ev.event() ); | 103 | Event m_Event( m_Ev.event() ); |
104 | 104 | ||
105 | QDateTime dt( m_Ev.date(), m_Ev.start() ); | 105 | QDateTime dt( m_Ev.date(), m_Ev.start() ); |
106 | m_Event.setStart( dt ); | 106 | m_Event.setStart( dt ); |
107 | 107 | ||
108 | dt.setTime( m_Ev.end() ); | 108 | dt.setTime( m_Ev.end() ); |
109 | m_Event.setEnd( dt ); | 109 | m_Event.setEnd( dt ); |
110 | emit beamMe( m_Event ); | 110 | emit beamMe( m_Event ); |
111 | }else { | 111 | }else { |
112 | /* | 112 | /* |
113 | * at least the the Times are right now | 113 | * at least the the Times are right now |
114 | */ | 114 | */ |
115 | QDateTime start( m_Ev.event().start() ); | 115 | QDateTime start( m_Ev.event().start() ); |
116 | QDateTime end ( m_Ev.event().end () ); | 116 | QDateTime end ( m_Ev.event().end () ); |
117 | 117 | ||
118 | /* | 118 | /* |
119 | * ok we know the start date or we need to find it | 119 | * ok we know the start date or we need to find it |
120 | */ | 120 | */ |
121 | if ( m_Ev.start() != QTime( 0, 0, 0 ) ) { | 121 | if ( m_Ev.start() != QTime( 0, 0, 0 ) ) { |
122 | start.setDate( m_Ev.date() ); | 122 | start.setDate( m_Ev.date() ); |
123 | }else { | 123 | }else { |
124 | QDate dt = DateBookDay::findRealStart( m_Ev.event().uid(), m_Ev.date(), dateBook ); | 124 | QDate dt = DateBookDay::findRealStart( m_Ev.event().uid(), m_Ev.date(), dateBook ); |
125 | start.setDate( dt ); | 125 | start.setDate( dt ); |
126 | } | 126 | } |
127 | 127 | ||
128 | /* | 128 | /* |
129 | * ok we know now the end date... | 129 | * ok we know now the end date... |
130 | * else | 130 | * else |
131 | * get to know the offset btw the real start and real end | 131 | * get to know the offset btw the real start and real end |
132 | * and then add it to the new start date... | 132 | * and then add it to the new start date... |
133 | */ | 133 | */ |
134 | if ( m_Ev.end() != QTime(23, 59, 59 ) ) { | 134 | if ( m_Ev.end() != QTime(23, 59, 59 ) ) { |
135 | end.setDate( m_Ev.date() ); | 135 | end.setDate( m_Ev.date() ); |
136 | }else{ | 136 | }else{ |
137 | int days = m_Ev.event().start().date().daysTo( m_Ev.event().end().date() ); | 137 | int days = m_Ev.event().start().date().daysTo( m_Ev.event().end().date() ); |
138 | end.setDate( start.date().addDays( days ) ); | 138 | end.setDate( start.date().addDays( days ) ); |
139 | } | 139 | } |
140 | Event m_Event( m_Ev.event() ); | 140 | Event m_Event( m_Ev.event() ); |
141 | m_Event.setStart( start ); | 141 | m_Event.setStart( start ); |
142 | m_Event.setEnd ( end ); | 142 | m_Event.setEnd ( end ); |
143 | emit beamMe( m_Event ); | 143 | emit beamMe( m_Event ); |
144 | } | 144 | } |
145 | } | 145 | } |
146 | 146 | ||
147 | void DatebookAlldayDisp::mousePressEvent(QMouseEvent*e) | 147 | void DatebookAlldayDisp::mousePressEvent(QMouseEvent*e) |
148 | { | 148 | { |
149 | Event ev = m_Ev.event(); | 149 | Event ev = m_Ev.event(); |
150 | QColor b = backgroundColor(); | 150 | QColor b = backgroundColor(); |
151 | setBackgroundColor(green); | 151 | setBackgroundColor(green); |
152 | update(); | 152 | update(); |
153 | QPopupMenu m; | 153 | QPopupMenu m; |
154 | m.insertItem( DateBookDayWidget::tr( "Edit" ), 1 ); | 154 | m.insertItem( DateBookDayWidget::tr( "Edit" ), 1 ); |
155 | m.insertItem( DateBookDayWidget::tr( "Duplicate" ), 4 ); | 155 | m.insertItem( DateBookDayWidget::tr( "Duplicate" ), 4 ); |
156 | m.insertItem( DateBookDayWidget::tr( "Delete" ), 2 ); | 156 | m.insertItem( DateBookDayWidget::tr( "Delete" ), 2 ); |
157 | if(Ir::supported()) m.insertItem( DateBookDayWidget::tr( "Beam" ), 3 ); | 157 | if(Ir::supported()) m.insertItem( DateBookDayWidget::tr( "Beam" ), 3 ); |
158 | if(Ir::supported() && m_Ev.event().doRepeat() ) m.insertItem( DateBookDayWidget::tr( "Beam this occurence"), 5 ); | 158 | if(Ir::supported() && m_Ev.event().doRepeat() ) m.insertItem( DateBookDayWidget::tr( "Beam this occurence"), 5 ); |
159 | m.insertItem( tr( "Info"),6); | 159 | m.insertItem( tr( "Info"),6); |
diff --git a/core/pim/datebook/datebookdayheaderimpl.cpp b/core/pim/datebook/datebookdayheaderimpl.cpp index 213c843..51b78ca 100644 --- a/core/pim/datebook/datebookdayheaderimpl.cpp +++ b/core/pim/datebook/datebookdayheaderimpl.cpp | |||
@@ -3,194 +3,194 @@ | |||
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | #include "datebookdayheaderimpl.h" | 20 | #include "datebookdayheaderimpl.h" |
21 | 21 | ||
22 | #include <qpe/datebookmonth.h> | 22 | #include <qpe/datebookmonth.h> |
23 | #include <qpe/resource.h> | 23 | #include <qpe/resource.h> |
24 | 24 | ||
25 | #include <qbuttongroup.h> | 25 | #include <qbuttongroup.h> |
26 | #include <qtoolbutton.h> | 26 | #include <qtoolbutton.h> |
27 | 27 | ||
28 | 28 | ||
29 | /* | 29 | /* |
30 | * Constructs a DateBookDayHeader which is a child of 'parent', with the | 30 | * Constructs a DateBookDayHeader which is a child of 'parent', with the |
31 | * name 'name' and widget flags set to 'f' | 31 | * name 'name' and widget flags set to 'f' |
32 | * | 32 | * |
33 | * The dialog will by default be modeless, unless you set 'modal' to | 33 | * The dialog will by default be modeless, unless you set 'modal' to |
34 | * TRUE to construct a modal dialog. | 34 | * TRUE to construct a modal dialog. |
35 | */ | 35 | */ |
36 | DateBookDayHeader::DateBookDayHeader( bool useMonday, | 36 | DateBookDayHeader::DateBookDayHeader( bool useMonday, |
37 | QWidget* parent, const char* name ) | 37 | QWidget* parent, const char* name ) |
38 | : DateBookDayHeaderBase( parent, name ), | 38 | : DateBookDayHeaderBase( parent, name ), |
39 | bUseMonday( useMonday ) | 39 | bUseMonday( useMonday ) |
40 | { | 40 | { |
41 | connect(date,SIGNAL(pressed()),this,SLOT(pickDate())); | 41 | connect(date,SIGNAL(pressed()),this,SLOT(pickDate())); |
42 | 42 | ||
43 | setupNames(); | 43 | setupNames(); |
44 | 44 | ||
45 | forward->setPixmap( Resource::loadPixmap( "forward" ) ); | 45 | forward->setPixmap( Resource::loadPixmap( "forward" ) ); |
46 | back->setPixmap( Resource::loadPixmap( "back" ) ); | 46 | back->setPixmap( Resource::loadPixmap( "back" ) ); |
47 | forwardweek->setPixmap( Resource::loadPixmap( "fastforward" ) ); | 47 | forwardweek->setPixmap( Resource::loadPixmap( "fastforward" ) ); |
48 | backweek->setPixmap( Resource::loadPixmap( "fastback" ) ); | 48 | backweek->setPixmap( Resource::loadPixmap( "fastback" ) ); |
49 | 49 | ||
50 | setBackgroundMode( PaletteButton ); | 50 | setBackgroundMode( PaletteButton ); |
51 | grpDays->setBackgroundMode( PaletteButton ); | 51 | grpDays->setBackgroundMode( PaletteButton ); |
52 | } | 52 | } |
53 | 53 | ||
54 | /* | 54 | /* |
55 | * Destroys the object and frees any allocated resources | 55 | * Destroys the object and frees any allocated resources |
56 | */ | 56 | */ |
57 | DateBookDayHeader::~DateBookDayHeader() | 57 | DateBookDayHeader::~DateBookDayHeader() |
58 | { | 58 | { |
59 | // no need to delete child widgets, Qt does it all for us | 59 | // no need to delete child widgets, Qt does it all for us |
60 | } | 60 | } |
61 | 61 | ||
62 | void DateBookDayHeader::setStartOfWeek( bool onMonday ) | 62 | void DateBookDayHeader::setStartOfWeek( bool onMonday ) |
63 | { | 63 | { |
64 | bUseMonday = onMonday; | 64 | bUseMonday = onMonday; |
65 | setupNames(); | 65 | setupNames(); |
66 | setDate( currDate.year(), currDate.month(), currDate.day() ); | 66 | setDate( currDate.year(), currDate.month(), currDate.day() ); |
67 | } | 67 | } |
68 | 68 | ||
69 | void DateBookDayHeader::setupNames() | 69 | void DateBookDayHeader::setupNames() |
70 | { | 70 | { |
71 | if ( bUseMonday ) { | 71 | if ( bUseMonday ) { |
72 | cmdDay1->setText( DateBookDayHeaderBase::tr("Monday").left(1) ); | 72 | cmdDay1->setText( DateBookDayHeaderBase::tr("Monday").left(1) ); |
73 | cmdDay2->setText( DateBookDayHeaderBase::tr("Tuesday").left(1) ); | 73 | cmdDay2->setText( DateBookDayHeaderBase::tr("Tuesday").left(1) ); |
74 | cmdDay3->setText( DateBookDayHeaderBase::tr("Wednesday").left(1) ); | 74 | cmdDay3->setText( DateBookDayHeaderBase::tr("Wednesday").left(1) ); |
75 | cmdDay4->setText( DateBookDayHeaderBase::tr("Thursday").left(1) ); | 75 | cmdDay4->setText( DateBookDayHeaderBase::tr("Thursday").left(1) ); |
76 | cmdDay5->setText( DateBookDayHeaderBase::tr("Friday").left(1) ); | 76 | cmdDay5->setText( DateBookDayHeaderBase::tr("Friday").left(1) ); |
77 | cmdDay6->setText( DateBookDayHeaderBase::tr("Saturday").left(1) ); | 77 | cmdDay6->setText( DateBookDayHeaderBase::tr("Saturday").left(1) ); |
78 | cmdDay7->setText( DateBookDayHeaderBase::tr("Sunday").left(1) ); | 78 | cmdDay7->setText( DateBookDayHeaderBase::tr("Sunday").left(1) ); |
79 | } else { | 79 | } else { |
80 | cmdDay1->setText( DateBookDayHeaderBase::tr("Sunday").left(1) ); | 80 | cmdDay1->setText( DateBookDayHeaderBase::tr("Sunday").left(1) ); |
81 | cmdDay2->setText( DateBookDayHeaderBase::tr("Monday").left(1) ); | 81 | cmdDay2->setText( DateBookDayHeaderBase::tr("Monday").left(1) ); |
82 | cmdDay3->setText( DateBookDayHeaderBase::tr("Tuesday").left(1) ); | 82 | cmdDay3->setText( DateBookDayHeaderBase::tr("Tuesday").left(1) ); |
83 | cmdDay4->setText( DateBookDayHeaderBase::tr("Wednesday").left(1) ); | 83 | cmdDay4->setText( DateBookDayHeaderBase::tr("Wednesday").left(1) ); |
84 | cmdDay5->setText( DateBookDayHeaderBase::tr("Thursday").left(1) ); | 84 | cmdDay5->setText( DateBookDayHeaderBase::tr("Thursday").left(1) ); |
85 | cmdDay6->setText( DateBookDayHeaderBase::tr("Friday").left(1) ); | 85 | cmdDay6->setText( DateBookDayHeaderBase::tr("Friday").left(1) ); |
86 | cmdDay7->setText( DateBookDayHeaderBase::tr("Saturday").left(1) ); | 86 | cmdDay7->setText( DateBookDayHeaderBase::tr("Saturday").left(1) ); |
87 | } | 87 | } |
88 | } | 88 | } |
89 | 89 | ||
90 | 90 | ||
91 | void DateBookDayHeader::pickDate() | 91 | void DateBookDayHeader::pickDate() |
92 | { | 92 | { |
93 | static QPopupMenu *m1 = 0; | 93 | static QPopupMenu *m1 = 0; |
94 | static DateBookMonth *picker = 0; | 94 | static DateBookMonth *picker = 0; |
95 | if ( !m1 ) { | 95 | if ( !m1 ) { |
96 | m1 = new QPopupMenu( this ); | 96 | m1 = new QPopupMenu( this ); |
97 | picker = new DateBookMonth( m1, 0, TRUE ); | 97 | picker = new DateBookMonth( m1, 0, TRUE ); |
98 | m1->insertItem( picker ); | 98 | m1->insertItem( picker ); |
99 | connect( picker, SIGNAL( dateClicked( int, int, int ) ), | 99 | connect( picker, SIGNAL( dateClicked(int,int,int) ), |
100 | this, SLOT( setDate( int, int, int ) ) ); | 100 | this, SLOT( setDate(int,int,int) ) ); |
101 | connect( m1, SIGNAL( aboutToHide() ), | 101 | connect( m1, SIGNAL( aboutToHide() ), |
102 | this, SLOT( gotHide() ) ); | 102 | this, SLOT( gotHide() ) ); |
103 | } | 103 | } |
104 | picker->setDate( currDate.year(), currDate.month(), currDate.day() ); | 104 | picker->setDate( currDate.year(), currDate.month(), currDate.day() ); |
105 | m1->popup(mapToGlobal(date->pos()+QPoint(0,date->height()))); | 105 | m1->popup(mapToGlobal(date->pos()+QPoint(0,date->height()))); |
106 | picker->setFocus(); | 106 | picker->setFocus(); |
107 | } | 107 | } |
108 | 108 | ||
109 | void DateBookDayHeader::gotHide() | 109 | void DateBookDayHeader::gotHide() |
110 | { | 110 | { |
111 | // we have to redo the button... | 111 | // we have to redo the button... |
112 | date->setDown( false ); | 112 | date->setDown( false ); |
113 | } | 113 | } |
114 | 114 | ||
115 | /* | 115 | /* |
116 | * public slot | 116 | * public slot |
117 | */ | 117 | */ |
118 | void DateBookDayHeader::goBack() | 118 | void DateBookDayHeader::goBack() |
119 | { | 119 | { |
120 | currDate = currDate.addDays( -1 ); | 120 | currDate = currDate.addDays( -1 ); |
121 | setDate( currDate.year(), currDate.month(), currDate.day() ); | 121 | setDate( currDate.year(), currDate.month(), currDate.day() ); |
122 | } | 122 | } |
123 | /* | 123 | /* |
124 | * public slot | 124 | * public slot |
125 | */ | 125 | */ |
126 | void DateBookDayHeader::goForward() | 126 | void DateBookDayHeader::goForward() |
127 | { | 127 | { |
128 | currDate = currDate.addDays( 1 ); | 128 | currDate = currDate.addDays( 1 ); |
129 | setDate( currDate.year(), currDate.month(), currDate.day() ); | 129 | setDate( currDate.year(), currDate.month(), currDate.day() ); |
130 | } | 130 | } |
131 | /* | 131 | /* |
132 | * public slot | 132 | * public slot |
133 | */ | 133 | */ |
134 | void DateBookDayHeader::goBackWeek() | 134 | void DateBookDayHeader::goBackWeek() |
135 | { | 135 | { |
136 | currDate = currDate.addDays( -7 ); | 136 | currDate = currDate.addDays( -7 ); |
137 | setDate( currDate.year(), currDate.month(), currDate.day() ); | 137 | setDate( currDate.year(), currDate.month(), currDate.day() ); |
138 | } | 138 | } |
139 | /* | 139 | /* |
140 | * public slot | 140 | * public slot |
141 | */ | 141 | */ |
142 | void DateBookDayHeader::goForwardWeek() | 142 | void DateBookDayHeader::goForwardWeek() |
143 | { | 143 | { |
144 | currDate = currDate.addDays( 7 ); | 144 | currDate = currDate.addDays( 7 ); |
145 | setDate( currDate.year(), currDate.month(), currDate.day() ); | 145 | setDate( currDate.year(), currDate.month(), currDate.day() ); |
146 | } | 146 | } |
147 | 147 | ||
148 | 148 | ||
149 | /* | 149 | /* |
150 | * public slot | 150 | * public slot |
151 | */ | 151 | */ |
152 | void DateBookDayHeader::setDate( int y, int m, int d ) | 152 | void DateBookDayHeader::setDate( int y, int m, int d ) |
153 | { | 153 | { |
154 | currDate.setYMD( y, m, d ); | 154 | currDate.setYMD( y, m, d ); |
155 | date->setText( TimeString::shortDate( currDate ) ); | 155 | date->setText( TimeString::shortDate( currDate ) ); |
156 | 156 | ||
157 | int iDayOfWeek = currDate.dayOfWeek(); | 157 | int iDayOfWeek = currDate.dayOfWeek(); |
158 | // cleverly adjust the day depending on how we start the week | 158 | // cleverly adjust the day depending on how we start the week |
159 | if ( bUseMonday ) | 159 | if ( bUseMonday ) |
160 | iDayOfWeek--; | 160 | iDayOfWeek--; |
161 | else { | 161 | else { |
162 | if ( iDayOfWeek == 7 ) // Sunday | 162 | if ( iDayOfWeek == 7 ) // Sunday |
163 | iDayOfWeek = 0; | 163 | iDayOfWeek = 0; |
164 | } | 164 | } |
165 | grpDays->setButton( iDayOfWeek ); | 165 | grpDays->setButton( iDayOfWeek ); |
166 | emit dateChanged( y, m, d ); | 166 | emit dateChanged( y, m, d ); |
167 | } | 167 | } |
168 | 168 | ||
169 | /* | 169 | /* |
170 | * public slot | 170 | * public slot |
171 | */ | 171 | */ |
172 | void DateBookDayHeader::setDay( int day ) | 172 | void DateBookDayHeader::setDay( int day ) |
173 | { | 173 | { |
174 | int realDay; | 174 | int realDay; |
175 | int dayOfWeek = currDate.dayOfWeek(); | 175 | int dayOfWeek = currDate.dayOfWeek(); |
176 | 176 | ||
177 | // a little adjustment is needed... | 177 | // a little adjustment is needed... |
178 | if ( bUseMonday ) | 178 | if ( bUseMonday ) |
179 | realDay = day + 1 ; | 179 | realDay = day + 1 ; |
180 | else if ( !bUseMonday && day == 0 ) // sunday | 180 | else if ( !bUseMonday && day == 0 ) // sunday |
181 | realDay = 7; | 181 | realDay = 7; |
182 | else | 182 | else |
183 | realDay = day; | 183 | realDay = day; |
184 | // special cases first... | 184 | // special cases first... |
185 | if ( realDay == 7 && !bUseMonday ) { | 185 | if ( realDay == 7 && !bUseMonday ) { |
186 | while ( currDate.dayOfWeek() != realDay ) | 186 | while ( currDate.dayOfWeek() != realDay ) |
187 | currDate = currDate.addDays( -1 ); | 187 | currDate = currDate.addDays( -1 ); |
188 | } else if ( !bUseMonday && dayOfWeek == 7 && dayOfWeek > realDay ) { | 188 | } else if ( !bUseMonday && dayOfWeek == 7 && dayOfWeek > realDay ) { |
189 | while ( currDate.dayOfWeek() != realDay ) | 189 | while ( currDate.dayOfWeek() != realDay ) |
190 | currDate = currDate.addDays( 1 ); | 190 | currDate = currDate.addDays( 1 ); |
191 | } else if ( dayOfWeek < realDay ) { | 191 | } else if ( dayOfWeek < realDay ) { |
192 | while ( currDate.dayOfWeek() < realDay ) | 192 | while ( currDate.dayOfWeek() < realDay ) |
193 | currDate = currDate.addDays( 1 ); | 193 | currDate = currDate.addDays( 1 ); |
194 | } else if ( dayOfWeek > realDay ) { | 194 | } else if ( dayOfWeek > realDay ) { |
195 | while ( currDate.dayOfWeek() > realDay ) | 195 | while ( currDate.dayOfWeek() > realDay ) |
196 | currDate = currDate.addDays( -1 ); | 196 | currDate = currDate.addDays( -1 ); |
diff --git a/core/pim/datebook/datebooksettings.cpp b/core/pim/datebook/datebooksettings.cpp index a6d04ba..cb4b73b 100644 --- a/core/pim/datebook/datebooksettings.cpp +++ b/core/pim/datebook/datebooksettings.cpp | |||
@@ -1,130 +1,130 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "datebooksettings.h" | 21 | #include "datebooksettings.h" |
22 | 22 | ||
23 | #include <qpe/qpeapplication.h> | 23 | #include <qpe/qpeapplication.h> |
24 | 24 | ||
25 | #include <qspinbox.h> | 25 | #include <qspinbox.h> |
26 | #include <qcheckbox.h> | 26 | #include <qcheckbox.h> |
27 | 27 | ||
28 | DateBookSettings::DateBookSettings( bool whichClock, QWidget *parent, | 28 | DateBookSettings::DateBookSettings( bool whichClock, QWidget *parent, |
29 | const char *name, bool modal, WFlags fl ) | 29 | const char *name, bool modal, WFlags fl ) |
30 | : DateBookSettingsBase( parent, name, modal, fl ), | 30 | : DateBookSettingsBase( parent, name, modal, fl ), |
31 | ampm( whichClock ) | 31 | ampm( whichClock ) |
32 | { | 32 | { |
33 | init(); | 33 | init(); |
34 | QObject::connect( qApp, SIGNAL( clockChanged( bool ) ), this, SLOT( slotChangeClock( bool ) ) ); | 34 | QObject::connect( qApp, SIGNAL( clockChanged(bool) ), this, SLOT( slotChangeClock(bool) ) ); |
35 | QArray<int> categories; | 35 | QArray<int> categories; |
36 | comboCategory->setCategories( categories, "Calendar", tr("Calendar") ); | 36 | comboCategory->setCategories( categories, "Calendar", tr("Calendar") ); |
37 | } | 37 | } |
38 | 38 | ||
39 | DateBookSettings::~DateBookSettings() | 39 | DateBookSettings::~DateBookSettings() |
40 | { | 40 | { |
41 | } | 41 | } |
42 | 42 | ||
43 | void DateBookSettings::setStartTime( int newStartViewTime ) | 43 | void DateBookSettings::setStartTime( int newStartViewTime ) |
44 | { | 44 | { |
45 | if ( ampm ) { | 45 | if ( ampm ) { |
46 | if ( newStartViewTime >= 12 ) { | 46 | if ( newStartViewTime >= 12 ) { |
47 | newStartViewTime %= 12; | 47 | newStartViewTime %= 12; |
48 | if ( newStartViewTime == 0 ) | 48 | if ( newStartViewTime == 0 ) |
49 | newStartViewTime = 12; | 49 | newStartViewTime = 12; |
50 | spinStart->setSuffix( tr(":00 PM") ); | 50 | spinStart->setSuffix( tr(":00 PM") ); |
51 | } | 51 | } |
52 | else if ( newStartViewTime == 0 ) { | 52 | else if ( newStartViewTime == 0 ) { |
53 | newStartViewTime = 12; | 53 | newStartViewTime = 12; |
54 | spinStart->setSuffix( tr(":00 AM") ); | 54 | spinStart->setSuffix( tr(":00 AM") ); |
55 | } | 55 | } |
56 | oldtime = newStartViewTime; | 56 | oldtime = newStartViewTime; |
57 | } | 57 | } |
58 | spinStart->setValue( newStartViewTime ); | 58 | spinStart->setValue( newStartViewTime ); |
59 | } | 59 | } |
60 | 60 | ||
61 | int DateBookSettings::startTime() const | 61 | int DateBookSettings::startTime() const |
62 | { | 62 | { |
63 | int returnMe = spinStart->value(); | 63 | int returnMe = spinStart->value(); |
64 | if ( ampm ) { | 64 | if ( ampm ) { |
65 | if ( returnMe != 12 && spinStart->suffix().contains(tr("PM"), FALSE) ) | 65 | if ( returnMe != 12 && spinStart->suffix().contains(tr("PM"), FALSE) ) |
66 | returnMe += 12; | 66 | returnMe += 12; |
67 | else if (returnMe == 12 && spinStart->suffix().contains(tr("AM"), TRUE)) | 67 | else if (returnMe == 12 && spinStart->suffix().contains(tr("AM"), TRUE)) |
68 | returnMe = 0; | 68 | returnMe = 0; |
69 | } | 69 | } |
70 | return returnMe; | 70 | return returnMe; |
71 | } | 71 | } |
72 | 72 | ||
73 | 73 | ||
74 | void DateBookSettings::setAlarmPreset( bool bAlarm, int presetTime ) | 74 | void DateBookSettings::setAlarmPreset( bool bAlarm, int presetTime ) |
75 | { | 75 | { |
76 | chkAlarmPreset->setChecked( bAlarm ); | 76 | chkAlarmPreset->setChecked( bAlarm ); |
77 | if ( presetTime >=5 ) | 77 | if ( presetTime >=5 ) |
78 | spinPreset->setValue( presetTime ); | 78 | spinPreset->setValue( presetTime ); |
79 | } | 79 | } |
80 | 80 | ||
81 | bool DateBookSettings::alarmPreset() const | 81 | bool DateBookSettings::alarmPreset() const |
82 | { | 82 | { |
83 | return chkAlarmPreset->isChecked(); | 83 | return chkAlarmPreset->isChecked(); |
84 | } | 84 | } |
85 | 85 | ||
86 | int DateBookSettings::presetTime() const | 86 | int DateBookSettings::presetTime() const |
87 | { | 87 | { |
88 | return spinPreset->value(); | 88 | return spinPreset->value(); |
89 | } | 89 | } |
90 | 90 | ||
91 | 91 | ||
92 | void DateBookSettings::slot12Hour( int i ) | 92 | void DateBookSettings::slot12Hour( int i ) |
93 | { | 93 | { |
94 | if ( ampm ) { | 94 | if ( ampm ) { |
95 | if ( spinStart->suffix().contains( tr("AM"), FALSE ) ) { | 95 | if ( spinStart->suffix().contains( tr("AM"), FALSE ) ) { |
96 | if ( oldtime == 12 && i == 11 || oldtime == 11 && i == 12 ) | 96 | if ( oldtime == 12 && i == 11 || oldtime == 11 && i == 12 ) |
97 | spinStart->setSuffix( tr(":00 PM") ); | 97 | spinStart->setSuffix( tr(":00 PM") ); |
98 | } else { | 98 | } else { |
99 | if ( oldtime == 12 && i == 11 || oldtime == 11 && i == 12 ) | 99 | if ( oldtime == 12 && i == 11 || oldtime == 11 && i == 12 ) |
100 | spinStart->setSuffix( tr(":00 AM") ); | 100 | spinStart->setSuffix( tr(":00 AM") ); |
101 | } | 101 | } |
102 | oldtime = i; | 102 | oldtime = i; |
103 | } | 103 | } |
104 | } | 104 | } |
105 | 105 | ||
106 | void DateBookSettings::init() | 106 | void DateBookSettings::init() |
107 | { | 107 | { |
108 | if ( ampm ) { | 108 | if ( ampm ) { |
109 | spinStart->setMinValue( 1 ); | 109 | spinStart->setMinValue( 1 ); |
110 | spinStart->setMaxValue( 12 ); | 110 | spinStart->setMaxValue( 12 ); |
111 | spinStart->setValue( 12 ); | 111 | spinStart->setValue( 12 ); |
112 | spinStart->setSuffix( tr(":00 AM") ); | 112 | spinStart->setSuffix( tr(":00 AM") ); |
113 | oldtime = 12; | 113 | oldtime = 12; |
114 | } else { | 114 | } else { |
115 | spinStart->setMinValue( 0 ); | 115 | spinStart->setMinValue( 0 ); |
116 | spinStart->setMaxValue( 23 ); | 116 | spinStart->setMaxValue( 23 ); |
117 | spinStart->setSuffix( tr(":00") ); | 117 | spinStart->setSuffix( tr(":00") ); |
118 | } | 118 | } |
119 | } | 119 | } |
120 | 120 | ||
121 | void DateBookSettings::slotChangeClock( bool whichClock ) | 121 | void DateBookSettings::slotChangeClock( bool whichClock ) |
122 | { | 122 | { |
123 | int saveMe; | 123 | int saveMe; |
124 | saveMe = spinStart->value(); | 124 | saveMe = spinStart->value(); |
125 | if ( ampm && spinStart->suffix().contains( tr("AM"), FALSE ) ) { | 125 | if ( ampm && spinStart->suffix().contains( tr("AM"), FALSE ) ) { |
126 | if ( saveMe == 12 ) | 126 | if ( saveMe == 12 ) |
127 | saveMe = 0; | 127 | saveMe = 0; |
128 | } else if ( ampm && spinStart->suffix().contains( tr("PM"), FALSE ) ) { | 128 | } else if ( ampm && spinStart->suffix().contains( tr("PM"), FALSE ) ) { |
129 | if ( saveMe != 12 ) | 129 | if ( saveMe != 12 ) |
130 | saveMe += 12; | 130 | saveMe += 12; |
diff --git a/core/pim/datebook/datebookweek.cpp b/core/pim/datebook/datebookweek.cpp index 933e191..7503751 100644 --- a/core/pim/datebook/datebookweek.cpp +++ b/core/pim/datebook/datebookweek.cpp | |||
@@ -269,196 +269,196 @@ void DateBookWeekView::drawContents( QPainter *p, int cx, int cy, int cw, int ch | |||
269 | int y = t*rowHeight; | 269 | int y = t*rowHeight; |
270 | if ( QRect( 1, y, 20, rowHeight ).intersects( ur ) ) { | 270 | if ( QRect( 1, y, 20, rowHeight ).intersects( ur ) ) { |
271 | QString s; | 271 | QString s; |
272 | if ( ampm ) { | 272 | if ( ampm ) { |
273 | if ( t == 0 ) | 273 | if ( t == 0 ) |
274 | s = QString::number( 12 ); | 274 | s = QString::number( 12 ); |
275 | else if ( t == 12 ) | 275 | else if ( t == 12 ) |
276 | s = QString::number(12) + tr( "p" ); | 276 | s = QString::number(12) + tr( "p" ); |
277 | else if ( t > 12 ) { | 277 | else if ( t > 12 ) { |
278 | if ( t - 12 < 10 ) | 278 | if ( t - 12 < 10 ) |
279 | s = " "; | 279 | s = " "; |
280 | else | 280 | else |
281 | s = ""; | 281 | s = ""; |
282 | s += QString::number( t - 12 ) + tr("p"); | 282 | s += QString::number( t - 12 ) + tr("p"); |
283 | } else { | 283 | } else { |
284 | if ( 12 - t < 3 ) | 284 | if ( 12 - t < 3 ) |
285 | s = ""; | 285 | s = ""; |
286 | else | 286 | else |
287 | s = " "; | 287 | s = " "; |
288 | s += QString::number( t ); | 288 | s += QString::number( t ); |
289 | } | 289 | } |
290 | } else { | 290 | } else { |
291 | s = QString::number( t ); | 291 | s = QString::number( t ); |
292 | if ( s.length() == 1 ) | 292 | if ( s.length() == 1 ) |
293 | s.prepend( "0" ); | 293 | s.prepend( "0" ); |
294 | } | 294 | } |
295 | p->drawText( 1, y+p->fontMetrics().ascent()+1, s ); | 295 | p->drawText( 1, y+p->fontMetrics().ascent()+1, s ); |
296 | } | 296 | } |
297 | } | 297 | } |
298 | 298 | ||
299 | QListIterator<DateBookWeekItem> it(items); | 299 | QListIterator<DateBookWeekItem> it(items); |
300 | for ( ; it.current(); ++it ) { | 300 | for ( ; it.current(); ++it ) { |
301 | DateBookWeekItem *i = it.current(); | 301 | DateBookWeekItem *i = it.current(); |
302 | if ( i->geometry().intersects( ur ) ) { | 302 | if ( i->geometry().intersects( ur ) ) { |
303 | p->setBrush( i->color() ); | 303 | p->setBrush( i->color() ); |
304 | p->drawRect( i->geometry() ); | 304 | p->drawRect( i->geometry() ); |
305 | } | 305 | } |
306 | } | 306 | } |
307 | } | 307 | } |
308 | 308 | ||
309 | void DateBookWeekView::resizeEvent( QResizeEvent *e ) | 309 | void DateBookWeekView::resizeEvent( QResizeEvent *e ) |
310 | { | 310 | { |
311 | const int hourWidth = 20; | 311 | const int hourWidth = 20; |
312 | QScrollView::resizeEvent( e ); | 312 | QScrollView::resizeEvent( e ); |
313 | 313 | ||
314 | 314 | ||
315 | //HEAD | 315 | //HEAD |
316 | /* | 316 | /* |
317 | int avail = visibleWidth(); | 317 | int avail = visibleWidth(); |
318 | header->setGeometry( leftMargin()+frameWidth()+frameRect().left() , frameWidth(), | 318 | header->setGeometry( leftMargin()+frameWidth()+frameRect().left() , frameWidth(), |
319 | visibleWidth(), header->sizeHint().height() ); | 319 | visibleWidth(), header->sizeHint().height() ); |
320 | setMargins( 0, header->sizeHint().height(), 0, 0 ); | 320 | setMargins( 0, header->sizeHint().height(), 0, 0 ); |
321 | */ | 321 | */ |
322 | //BRANCH_1_0 | 322 | //BRANCH_1_0 |
323 | int avail = width()-qApp->style().scrollBarExtent().width()-1; | 323 | int avail = width()-qApp->style().scrollBarExtent().width()-1; |
324 | header->setGeometry( 0, 0, avail, header->sizeHint().height() ); | 324 | header->setGeometry( 0, 0, avail, header->sizeHint().height() ); |
325 | setMargins( 0, header->height(), 0, 0 ); | 325 | setMargins( 0, header->height(), 0, 0 ); |
326 | 326 | ||
327 | 327 | ||
328 | header->resizeSection( 0, hourWidth ); | 328 | header->resizeSection( 0, hourWidth ); |
329 | int sw = (avail - hourWidth) / 7; | 329 | int sw = (avail - hourWidth) / 7; |
330 | for ( int i = 1; i < 7; i++ ) | 330 | for ( int i = 1; i < 7; i++ ) |
331 | header->resizeSection( i, sw ); | 331 | header->resizeSection( i, sw ); |
332 | header->resizeSection( 7, avail - hourWidth - sw*6 ); | 332 | header->resizeSection( 7, avail - hourWidth - sw*6 ); |
333 | } | 333 | } |
334 | 334 | ||
335 | void DateBookWeekView::setStartOfWeek( bool bStartOnMonday ) | 335 | void DateBookWeekView::setStartOfWeek( bool bStartOnMonday ) |
336 | { | 336 | { |
337 | bOnMonday = bStartOnMonday; | 337 | bOnMonday = bStartOnMonday; |
338 | initNames(); | 338 | initNames(); |
339 | } | 339 | } |
340 | 340 | ||
341 | //------------------------------------------------------------------- | 341 | //------------------------------------------------------------------- |
342 | 342 | ||
343 | DateBookWeek::DateBookWeek( bool ap, bool startOnMonday, DateBookDB *newDB, | 343 | DateBookWeek::DateBookWeek( bool ap, bool startOnMonday, DateBookDB *newDB, |
344 | QWidget *parent, const char *name ) | 344 | QWidget *parent, const char *name ) |
345 | : QWidget( parent, name ), | 345 | : QWidget( parent, name ), |
346 | db( newDB ), | 346 | db( newDB ), |
347 | startTime( 0 ), | 347 | startTime( 0 ), |
348 | ampm( ap ), | 348 | ampm( ap ), |
349 | bStartOnMonday( startOnMonday ) | 349 | bStartOnMonday( startOnMonday ) |
350 | { | 350 | { |
351 | setFocusPolicy(StrongFocus); | 351 | setFocusPolicy(StrongFocus); |
352 | QVBoxLayout *vb = new QVBoxLayout( this ); | 352 | QVBoxLayout *vb = new QVBoxLayout( this ); |
353 | header = new DateBookWeekHeader( bStartOnMonday, this ); | 353 | header = new DateBookWeekHeader( bStartOnMonday, this ); |
354 | view = new DateBookWeekView( ampm, startOnMonday, this ); | 354 | view = new DateBookWeekView( ampm, startOnMonday, this ); |
355 | vb->addWidget( header ); | 355 | vb->addWidget( header ); |
356 | vb->addWidget( view ); | 356 | vb->addWidget( view ); |
357 | 357 | ||
358 | lblDesc = new QLabel( this, "event label" ); | 358 | lblDesc = new QLabel( this, "event label" ); |
359 | lblDesc->setFrameStyle( QFrame::Plain | QFrame::Box ); | 359 | lblDesc->setFrameStyle( QFrame::Plain | QFrame::Box ); |
360 | lblDesc->setBackgroundColor( yellow ); | 360 | lblDesc->setBackgroundColor( yellow ); |
361 | lblDesc->hide(); | 361 | lblDesc->hide(); |
362 | 362 | ||
363 | tHide = new QTimer( this ); | 363 | tHide = new QTimer( this ); |
364 | 364 | ||
365 | connect( view, SIGNAL( showDay( int ) ), this, SLOT( showDay( int ) ) ); | 365 | connect( view, SIGNAL( showDay(int) ), this, SLOT( showDay(int) ) ); |
366 | connect( view, SIGNAL(signalShowEvent(const EffectiveEvent&)), this, SLOT(slotShowEvent(const EffectiveEvent&)) ); | 366 | connect( view, SIGNAL(signalShowEvent(const EffectiveEvent&)), this, SLOT(slotShowEvent(const EffectiveEvent&)) ); |
367 | connect( view, SIGNAL(signalHideEvent()), this, SLOT(slotHideEvent()) ); | 367 | connect( view, SIGNAL(signalHideEvent()), this, SLOT(slotHideEvent()) ); |
368 | connect( header, SIGNAL( dateChanged( QDate &) ), this, SLOT( dateChanged( QDate &) ) ); | 368 | connect( header, SIGNAL( dateChanged(QDate&) ), this, SLOT( dateChanged(QDate&) ) ); |
369 | connect( tHide, SIGNAL( timeout() ), lblDesc, SLOT( hide() ) ); | 369 | connect( tHide, SIGNAL( timeout() ), lblDesc, SLOT( hide() ) ); |
370 | connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotWeekChanged(bool)) ); | 370 | connect( qApp, SIGNAL(weekChanged(bool)), this, SLOT(slotWeekChanged(bool)) ); |
371 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(slotClockChanged(bool))); | 371 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(slotClockChanged(bool))); |
372 | setDate(QDate::currentDate()); | 372 | setDate(QDate::currentDate()); |
373 | } | 373 | } |
374 | 374 | ||
375 | void DateBookWeek::keyPressEvent(QKeyEvent *e) | 375 | void DateBookWeek::keyPressEvent(QKeyEvent *e) |
376 | { | 376 | { |
377 | switch(e->key()) { | 377 | switch(e->key()) { |
378 | case Key_Up: | 378 | case Key_Up: |
379 | view->scrollBy(0, -20); | 379 | view->scrollBy(0, -20); |
380 | break; | 380 | break; |
381 | case Key_Down: | 381 | case Key_Down: |
382 | view->scrollBy(0, 20); | 382 | view->scrollBy(0, 20); |
383 | break; | 383 | break; |
384 | case Key_Left: | 384 | case Key_Left: |
385 | setDate(date().addDays(-7)); | 385 | setDate(date().addDays(-7)); |
386 | break; | 386 | break; |
387 | case Key_Right: | 387 | case Key_Right: |
388 | setDate(date().addDays(7)); | 388 | setDate(date().addDays(7)); |
389 | break; | 389 | break; |
390 | default: | 390 | default: |
391 | e->ignore(); | 391 | e->ignore(); |
392 | } | 392 | } |
393 | } | 393 | } |
394 | 394 | ||
395 | void DateBookWeek::showDay( int day ) | 395 | void DateBookWeek::showDay( int day ) |
396 | { | 396 | { |
397 | QDate d=bdate; | 397 | QDate d=bdate; |
398 | 398 | ||
399 | // Calculate offset to first day of week. | 399 | // Calculate offset to first day of week. |
400 | int dayoffset=d.dayOfWeek() % 7; | 400 | int dayoffset=d.dayOfWeek() % 7; |
401 | 401 | ||
402 | if(bStartOnMonday) dayoffset--; | 402 | if(bStartOnMonday) dayoffset--; |
403 | 403 | ||
404 | day--; | 404 | day--; |
405 | d=d.addDays(day-dayoffset); | 405 | d=d.addDays(day-dayoffset); |
406 | emit showDate( d.year(), d.month(), d.day() ); | 406 | emit showDate( d.year(), d.month(), d.day() ); |
407 | } | 407 | } |
408 | 408 | ||
409 | void DateBookWeek::setDate( int y, int m, int d ) | 409 | void DateBookWeek::setDate( int y, int m, int d ) |
410 | { | 410 | { |
411 | setDate(QDate(y, m, d)); | 411 | setDate(QDate(y, m, d)); |
412 | } | 412 | } |
413 | 413 | ||
414 | void DateBookWeek::setDate(QDate newdate) | 414 | void DateBookWeek::setDate(QDate newdate) |
415 | { | 415 | { |
416 | bdate=newdate; | 416 | bdate=newdate; |
417 | dow = newdate.dayOfWeek(); | 417 | dow = newdate.dayOfWeek(); |
418 | header->setDate( newdate ); | 418 | header->setDate( newdate ); |
419 | } | 419 | } |
420 | 420 | ||
421 | void DateBookWeek::dateChanged( QDate &newdate ) | 421 | void DateBookWeek::dateChanged( QDate &newdate ) |
422 | { | 422 | { |
423 | bdate=newdate; | 423 | bdate=newdate; |
424 | getEvents(); | 424 | getEvents(); |
425 | } | 425 | } |
426 | 426 | ||
427 | QDate DateBookWeek::date() const | 427 | QDate DateBookWeek::date() const |
428 | { | 428 | { |
429 | return bdate; | 429 | return bdate; |
430 | } | 430 | } |
431 | 431 | ||
432 | void DateBookWeek::getEvents() | 432 | void DateBookWeek::getEvents() |
433 | { | 433 | { |
434 | QDate startWeek = weekDate(); | 434 | QDate startWeek = weekDate(); |
435 | 435 | ||
436 | QDate endWeek = startWeek.addDays( 6 ); | 436 | QDate endWeek = startWeek.addDays( 6 ); |
437 | QValueList<EffectiveEvent> eventList = db->getEffectiveEvents(startWeek, endWeek); | 437 | QValueList<EffectiveEvent> eventList = db->getEffectiveEvents(startWeek, endWeek); |
438 | view->showEvents( eventList ); | 438 | view->showEvents( eventList ); |
439 | view->moveToHour( startTime ); | 439 | view->moveToHour( startTime ); |
440 | } | 440 | } |
441 | 441 | ||
442 | void DateBookWeek::generateAllDayTooltext( QString& text ) { | 442 | void DateBookWeek::generateAllDayTooltext( QString& text ) { |
443 | text += "<b>" + tr("This is an all day event.") + "</b><br>"; | 443 | text += "<b>" + tr("This is an all day event.") + "</b><br>"; |
444 | } | 444 | } |
445 | 445 | ||
446 | void DateBookWeek::generateNormalTooltext( QString& str, const EffectiveEvent &ev ) { | 446 | void DateBookWeek::generateNormalTooltext( QString& str, const EffectiveEvent &ev ) { |
447 | str += "<b>" + QObject::tr("Start") + "</b>: "; | 447 | str += "<b>" + QObject::tr("Start") + "</b>: "; |
448 | str += TimeString::timeString( ev.event().start().time(), ampm, FALSE ); | 448 | str += TimeString::timeString( ev.event().start().time(), ampm, FALSE ); |
449 | if( ev.startDate()!=ev.endDate() ) { | 449 | if( ev.startDate()!=ev.endDate() ) { |
450 | str += " <i>" + TimeString::longDateString( ev.startDate() )+"</i>"; | 450 | str += " <i>" + TimeString::longDateString( ev.startDate() )+"</i>"; |
451 | } | 451 | } |
452 | str += "<br>"; | 452 | str += "<br>"; |
453 | str += "<b>" + QObject::tr("End") + "</b>: "; | 453 | str += "<b>" + QObject::tr("End") + "</b>: "; |
454 | str += TimeString::timeString( ev.event().end().time(), ampm, FALSE ); | 454 | str += TimeString::timeString( ev.event().end().time(), ampm, FALSE ); |
455 | if( ev.startDate()!=ev.endDate() ) { | 455 | if( ev.startDate()!=ev.endDate() ) { |
456 | str += " <i>" + TimeString::longDateString( ev.endDate() ) + "</i>"; | 456 | str += " <i>" + TimeString::longDateString( ev.endDate() ) + "</i>"; |
457 | } | 457 | } |
458 | } | 458 | } |
459 | 459 | ||
460 | void DateBookWeek::slotShowEvent( const EffectiveEvent &ev ) | 460 | void DateBookWeek::slotShowEvent( const EffectiveEvent &ev ) |
461 | { | 461 | { |
462 | if ( tHide->isActive() ) | 462 | if ( tHide->isActive() ) |
463 | tHide->stop(); | 463 | tHide->stop(); |
464 | 464 | ||
diff --git a/core/pim/datebook/datebookweekheaderimpl.cpp b/core/pim/datebook/datebookweekheaderimpl.cpp index eaa9730..c237b2d 100644 --- a/core/pim/datebook/datebookweekheaderimpl.cpp +++ b/core/pim/datebook/datebookweekheaderimpl.cpp | |||
@@ -1,120 +1,120 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | #include "datebookweekheaderimpl.h" | 20 | #include "datebookweekheaderimpl.h" |
21 | #include "datebookweek.h" | 21 | #include "datebookweek.h" |
22 | #include <qpe/resource.h> | 22 | #include <qpe/resource.h> |
23 | #include <qpe/datebookmonth.h> | 23 | #include <qpe/datebookmonth.h> |
24 | 24 | ||
25 | #include <qtoolbutton.h> | 25 | #include <qtoolbutton.h> |
26 | 26 | ||
27 | /* | 27 | /* |
28 | * Constructs a DateBookWeekHeader which is a child of 'parent', with the | 28 | * Constructs a DateBookWeekHeader which is a child of 'parent', with the |
29 | * name 'name' and widget flags set to 'f' | 29 | * name 'name' and widget flags set to 'f' |
30 | */ | 30 | */ |
31 | DateBookWeekHeader::DateBookWeekHeader( bool startOnMonday, QWidget* parent, const char* name, WFlags fl ) | 31 | DateBookWeekHeader::DateBookWeekHeader( bool startOnMonday, QWidget* parent, const char* name, WFlags fl ) |
32 | : DateBookWeekHeaderBase( parent, name, fl ), | 32 | : DateBookWeekHeaderBase( parent, name, fl ), |
33 | bStartOnMonday( startOnMonday ) | 33 | bStartOnMonday( startOnMonday ) |
34 | { | 34 | { |
35 | setBackgroundMode( PaletteButton ); | 35 | setBackgroundMode( PaletteButton ); |
36 | labelDate->setBackgroundMode( PaletteButton ); | 36 | labelDate->setBackgroundMode( PaletteButton ); |
37 | backmonth->setPixmap( Resource::loadPixmap("fastback") ); | 37 | backmonth->setPixmap( Resource::loadPixmap("fastback") ); |
38 | backweek->setPixmap( Resource::loadPixmap("back") ); | 38 | backweek->setPixmap( Resource::loadPixmap("back") ); |
39 | forwardweek->setPixmap( Resource::loadPixmap("forward") ); | 39 | forwardweek->setPixmap( Resource::loadPixmap("forward") ); |
40 | forwardmonth->setPixmap( Resource::loadPixmap("fastforward") ); | 40 | forwardmonth->setPixmap( Resource::loadPixmap("fastforward") ); |
41 | } | 41 | } |
42 | 42 | ||
43 | /* | 43 | /* |
44 | * Destroys the object and frees any allocated resources | 44 | * Destroys the object and frees any allocated resources |
45 | */ | 45 | */ |
46 | DateBookWeekHeader::~DateBookWeekHeader() | 46 | DateBookWeekHeader::~DateBookWeekHeader() |
47 | { | 47 | { |
48 | // no need to delete child widgets, Qt does it all for us | 48 | // no need to delete child widgets, Qt does it all for us |
49 | } | 49 | } |
50 | 50 | ||
51 | void DateBookWeekHeader::pickDate() | 51 | void DateBookWeekHeader::pickDate() |
52 | { | 52 | { |
53 | static QPopupMenu *m1 = 0; | 53 | static QPopupMenu *m1 = 0; |
54 | static DateBookMonth *picker = 0; | 54 | static DateBookMonth *picker = 0; |
55 | if ( !m1 ) { | 55 | if ( !m1 ) { |
56 | m1 = new QPopupMenu( this ); | 56 | m1 = new QPopupMenu( this ); |
57 | picker = new DateBookMonth( m1, 0, TRUE ); | 57 | picker = new DateBookMonth( m1, 0, TRUE ); |
58 | m1->insertItem( picker ); | 58 | m1->insertItem( picker ); |
59 | connect( picker, SIGNAL( dateClicked( int, int, int ) ), this, SLOT( setDate( int, int, int ) ) ); | 59 | connect( picker, SIGNAL( dateClicked(int,int,int) ), this, SLOT( setDate(int,int,int) ) ); |
60 | // connect( m1, SIGNAL( aboutToHide() ), this, SLOT( gotHide() ) ); | 60 | // connect( m1, SIGNAL( aboutToHide() ), this, SLOT( gotHide() ) ); |
61 | } | 61 | } |
62 | picker->setDate( date.year(), date.month(), date.day() ); | 62 | picker->setDate( date.year(), date.month(), date.day() ); |
63 | m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height()))); | 63 | m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height()))); |
64 | picker->setFocus(); | 64 | picker->setFocus(); |
65 | } | 65 | } |
66 | 66 | ||
67 | void DateBookWeekHeader::nextMonth() | 67 | void DateBookWeekHeader::nextMonth() |
68 | { | 68 | { |
69 | qWarning("nextMonth() " ); | 69 | qWarning("nextMonth() " ); |
70 | setDate(date.addDays(28)); | 70 | setDate(date.addDays(28)); |
71 | } | 71 | } |
72 | void DateBookWeekHeader::prevMonth() | 72 | void DateBookWeekHeader::prevMonth() |
73 | { | 73 | { |
74 | qWarning("prevMonth() " ); | 74 | qWarning("prevMonth() " ); |
75 | setDate(date.addDays(-28)); | 75 | setDate(date.addDays(-28)); |
76 | } | 76 | } |
77 | void DateBookWeekHeader::nextWeek() | 77 | void DateBookWeekHeader::nextWeek() |
78 | { | 78 | { |
79 | qWarning("nextWeek() " ); | 79 | qWarning("nextWeek() " ); |
80 | setDate(date.addDays(7)); | 80 | setDate(date.addDays(7)); |
81 | } | 81 | } |
82 | void DateBookWeekHeader::prevWeek() | 82 | void DateBookWeekHeader::prevWeek() |
83 | { | 83 | { |
84 | qWarning("prevWeek() "); | 84 | qWarning("prevWeek() "); |
85 | setDate(date.addDays(-7)); | 85 | setDate(date.addDays(-7)); |
86 | } | 86 | } |
87 | 87 | ||
88 | void DateBookWeekHeader::setDate( int y, int m, int d ) | 88 | void DateBookWeekHeader::setDate( int y, int m, int d ) |
89 | { | 89 | { |
90 | setDate(QDate(y,m,d)); | 90 | setDate(QDate(y,m,d)); |
91 | } | 91 | } |
92 | 92 | ||
93 | void DateBookWeekHeader::setDate(const QDate &d) { | 93 | void DateBookWeekHeader::setDate(const QDate &d) { |
94 | int year,week,dayofweek; | 94 | int year,week,dayofweek; |
95 | date=d; | 95 | date=d; |
96 | dayofweek=d.dayOfWeek(); | 96 | dayofweek=d.dayOfWeek(); |
97 | if(bStartOnMonday) | 97 | if(bStartOnMonday) |
98 | dayofweek--; | 98 | dayofweek--; |
99 | else if( dayofweek == 7 ) | 99 | else if( dayofweek == 7 ) |
100 | // we already have the right day -7 would lead to the current week.. | 100 | // we already have the right day -7 would lead to the current week.. |
101 | dayofweek = 0; | 101 | dayofweek = 0; |
102 | 102 | ||
103 | date=date.addDays(-dayofweek); | 103 | date=date.addDays(-dayofweek); |
104 | calcWeek(date,week,year,bStartOnMonday); | 104 | calcWeek(date,week,year,bStartOnMonday); |
105 | QDate start=date; | 105 | QDate start=date; |
106 | QDate stop=start.addDays(6); | 106 | QDate stop=start.addDays(6); |
107 | labelDate->setText( QString::number(start.day()) + "." + | 107 | labelDate->setText( QString::number(start.day()) + "." + |
108 | Calendar::nameOfMonth( start.month()) + "-" + | 108 | Calendar::nameOfMonth( start.month()) + "-" + |
109 | QString::number(stop.day()) + "." + | 109 | QString::number(stop.day()) + "." + |
110 | Calendar::nameOfMonth( stop.month()) +" ("+ | 110 | Calendar::nameOfMonth( stop.month()) +" ("+ |
111 | tr("w")+":"+QString::number( week ) +")"); | 111 | tr("w")+":"+QString::number( week ) +")"); |
112 | date = d; // bugfix: 0001126 - date has to be the selected date, not monday! | 112 | date = d; // bugfix: 0001126 - date has to be the selected date, not monday! |
113 | emit dateChanged(date); | 113 | emit dateChanged(date); |
114 | } | 114 | } |
115 | 115 | ||
116 | void DateBookWeekHeader::setStartOfWeek( bool onMonday ) | 116 | void DateBookWeekHeader::setStartOfWeek( bool onMonday ) |
117 | { | 117 | { |
118 | bStartOnMonday = onMonday; | 118 | bStartOnMonday = onMonday; |
119 | setDate( date ); | 119 | setDate( date ); |
120 | } | 120 | } |
diff --git a/core/pim/datebook/datebookweeklst.cpp b/core/pim/datebook/datebookweeklst.cpp index 42a1753..af40143 100644 --- a/core/pim/datebook/datebookweeklst.cpp +++ b/core/pim/datebook/datebookweeklst.cpp | |||
@@ -1,394 +1,394 @@ | |||
1 | #include "datebookweeklst.h" | 1 | #include "datebookweeklst.h" |
2 | 2 | ||
3 | 3 | ||
4 | #include "datebook.h" | 4 | #include "datebook.h" |
5 | 5 | ||
6 | #include <qpe/datebookmonth.h> | 6 | #include <qpe/datebookmonth.h> |
7 | #include <qpe/config.h> | 7 | #include <qpe/config.h> |
8 | #include <qpe/resource.h> | 8 | #include <qpe/resource.h> |
9 | 9 | ||
10 | #include <qlayout.h> | 10 | #include <qlayout.h> |
11 | #include <qtoolbutton.h> | 11 | #include <qtoolbutton.h> |
12 | #include <qtl.h> | 12 | #include <qtl.h> |
13 | 13 | ||
14 | bool calcWeek(const QDate &d, int &week, int &year,bool startOnMonday = false); | 14 | bool calcWeek(const QDate &d, int &week, int &year,bool startOnMonday = false); |
15 | 15 | ||
16 | DateBookWeekLstHeader::DateBookWeekLstHeader(bool onM, QWidget* parent, const char* name, WFlags fl) | 16 | DateBookWeekLstHeader::DateBookWeekLstHeader(bool onM, QWidget* parent, const char* name, WFlags fl) |
17 | : DateBookWeekLstHeaderBase(parent, name, fl) | 17 | : DateBookWeekLstHeaderBase(parent, name, fl) |
18 | { | 18 | { |
19 | setBackgroundMode( PaletteButton ); | 19 | setBackgroundMode( PaletteButton ); |
20 | labelDate->setBackgroundMode( PaletteButton ); | 20 | labelDate->setBackgroundMode( PaletteButton ); |
21 | forwardweek->setBackgroundMode( PaletteButton ); | 21 | forwardweek->setBackgroundMode( PaletteButton ); |
22 | forwardweek->setPixmap( Resource::loadPixmap("forward") ); | 22 | forwardweek->setPixmap( Resource::loadPixmap("forward") ); |
23 | forwardmonth->setBackgroundMode( PaletteButton ); | 23 | forwardmonth->setBackgroundMode( PaletteButton ); |
24 | forwardmonth->setPixmap( Resource::loadPixmap("fastforward") ); | 24 | forwardmonth->setPixmap( Resource::loadPixmap("fastforward") ); |
25 | backweek->setBackgroundMode( PaletteButton ); | 25 | backweek->setBackgroundMode( PaletteButton ); |
26 | backweek->setPixmap( Resource::loadPixmap("back") ); | 26 | backweek->setPixmap( Resource::loadPixmap("back") ); |
27 | backmonth->setBackgroundMode( PaletteButton ); | 27 | backmonth->setBackgroundMode( PaletteButton ); |
28 | backmonth->setPixmap( Resource::loadPixmap("fastback") ); | 28 | backmonth->setPixmap( Resource::loadPixmap("fastback") ); |
29 | DateBookWeekLstHeaderBaseLayout->setSpacing(0); | 29 | DateBookWeekLstHeaderBaseLayout->setSpacing(0); |
30 | DateBookWeekLstHeaderBaseLayout->setMargin(0); | 30 | DateBookWeekLstHeaderBaseLayout->setMargin(0); |
31 | //setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding)); | 31 | //setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding)); |
32 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed)); | 32 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed)); |
33 | 33 | ||
34 | connect(backmonth, SIGNAL(clicked()), this, SLOT(prevMonth())); | 34 | connect(backmonth, SIGNAL(clicked()), this, SLOT(prevMonth())); |
35 | connect(backweek, SIGNAL(clicked()), this, SLOT(prevWeek())); | 35 | connect(backweek, SIGNAL(clicked()), this, SLOT(prevWeek())); |
36 | connect(forwardweek, SIGNAL(clicked()), this, SLOT(nextWeek())); | 36 | connect(forwardweek, SIGNAL(clicked()), this, SLOT(nextWeek())); |
37 | connect(forwardmonth, SIGNAL(clicked()), this, SLOT(nextMonth())); | 37 | connect(forwardmonth, SIGNAL(clicked()), this, SLOT(nextMonth())); |
38 | connect(labelDate, SIGNAL(clicked()), this, SLOT(pickDate())); | 38 | connect(labelDate, SIGNAL(clicked()), this, SLOT(pickDate())); |
39 | connect(dbl, SIGNAL(toggled(bool)), this, SIGNAL(setDbl(bool))); | 39 | connect(dbl, SIGNAL(toggled(bool)), this, SIGNAL(setDbl(bool))); |
40 | bStartOnMonday=onM; | 40 | bStartOnMonday=onM; |
41 | } | 41 | } |
42 | DateBookWeekLstHeader::~DateBookWeekLstHeader(){} | 42 | DateBookWeekLstHeader::~DateBookWeekLstHeader(){} |
43 | 43 | ||
44 | void DateBookWeekLstHeader::setDate(const QDate &d) { | 44 | void DateBookWeekLstHeader::setDate(const QDate &d) { |
45 | int year,week,dayofweek; | 45 | int year,week,dayofweek; |
46 | date=d; | 46 | date=d; |
47 | dayofweek=d.dayOfWeek(); | 47 | dayofweek=d.dayOfWeek(); |
48 | if(bStartOnMonday) | 48 | if(bStartOnMonday) |
49 | dayofweek--; | 49 | dayofweek--; |
50 | else if( dayofweek == 7 ) | 50 | else if( dayofweek == 7 ) |
51 | /* we already have the right day -7 would lead to the same week */ | 51 | /* we already have the right day -7 would lead to the same week */ |
52 | dayofweek = 0; | 52 | dayofweek = 0; |
53 | 53 | ||
54 | date=date.addDays(-dayofweek); | 54 | date=date.addDays(-dayofweek); |
55 | 55 | ||
56 | calcWeek(date,week,year,bStartOnMonday); | 56 | calcWeek(date,week,year,bStartOnMonday); |
57 | QDate start=date; | 57 | QDate start=date; |
58 | QDate stop=start.addDays(6); | 58 | QDate stop=start.addDays(6); |
59 | labelDate->setText( QString::number(start.day()) + "." + | 59 | labelDate->setText( QString::number(start.day()) + "." + |
60 | Calendar::nameOfMonth( start.month() ) + "-" + | 60 | Calendar::nameOfMonth( start.month() ) + "-" + |
61 | QString::number(stop.day()) + "." + | 61 | QString::number(stop.day()) + "." + |
62 | Calendar::nameOfMonth( stop.month()) +" ("+ | 62 | Calendar::nameOfMonth( stop.month()) +" ("+ |
63 | tr("w")+":"+QString::number( week ) +")"); | 63 | tr("w")+":"+QString::number( week ) +")"); |
64 | date = d; // bugfix: 0001126 - date has to be the selected date, not monday! | 64 | date = d; // bugfix: 0001126 - date has to be the selected date, not monday! |
65 | emit dateChanged(date); | 65 | emit dateChanged(date); |
66 | } | 66 | } |
67 | 67 | ||
68 | void DateBookWeekLstHeader::pickDate() { | 68 | void DateBookWeekLstHeader::pickDate() { |
69 | static QPopupMenu *m1 = 0; | 69 | static QPopupMenu *m1 = 0; |
70 | static DateBookMonth *picker = 0; | 70 | static DateBookMonth *picker = 0; |
71 | if ( !m1 ) { | 71 | if ( !m1 ) { |
72 | m1 = new QPopupMenu( this ); | 72 | m1 = new QPopupMenu( this ); |
73 | picker = new DateBookMonth( m1, 0, TRUE ); | 73 | picker = new DateBookMonth( m1, 0, TRUE ); |
74 | m1->insertItem( picker ); | 74 | m1->insertItem( picker ); |
75 | connect( picker, SIGNAL( dateClicked( int, int, int ) ),this, SLOT( setDate( int, int, int ) ) ); | 75 | connect( picker, SIGNAL( dateClicked(int,int,int) ),this, SLOT( setDate(int,int,int) ) ); |
76 | //connect( m1, SIGNAL( aboutToHide() ), | 76 | //connect( m1, SIGNAL( aboutToHide() ), |
77 | //this, SLOT( gotHide() ) ); | 77 | //this, SLOT( gotHide() ) ); |
78 | } | 78 | } |
79 | picker->setDate( date.year(), date.month(), date.day() ); | 79 | picker->setDate( date.year(), date.month(), date.day() ); |
80 | m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height()))); | 80 | m1->popup(mapToGlobal(labelDate->pos()+QPoint(0,labelDate->height()))); |
81 | picker->setFocus(); | 81 | picker->setFocus(); |
82 | } | 82 | } |
83 | void DateBookWeekLstHeader::setDate(int y, int m, int d) { | 83 | void DateBookWeekLstHeader::setDate(int y, int m, int d) { |
84 | setDate(QDate(y,m,d)); | 84 | setDate(QDate(y,m,d)); |
85 | } | 85 | } |
86 | 86 | ||
87 | void DateBookWeekLstHeader::nextWeek() { | 87 | void DateBookWeekLstHeader::nextWeek() { |
88 | setDate(date.addDays(7)); | 88 | setDate(date.addDays(7)); |
89 | } | 89 | } |
90 | void DateBookWeekLstHeader::prevWeek() { | 90 | void DateBookWeekLstHeader::prevWeek() { |
91 | setDate(date.addDays(-7)); | 91 | setDate(date.addDays(-7)); |
92 | } | 92 | } |
93 | void DateBookWeekLstHeader::nextMonth() | 93 | void DateBookWeekLstHeader::nextMonth() |
94 | { | 94 | { |
95 | setDate(date.addDays(28)); | 95 | setDate(date.addDays(28)); |
96 | } | 96 | } |
97 | void DateBookWeekLstHeader::prevMonth() | 97 | void DateBookWeekLstHeader::prevMonth() |
98 | { | 98 | { |
99 | setDate(date.addDays(-28)); | 99 | setDate(date.addDays(-28)); |
100 | } | 100 | } |
101 | 101 | ||
102 | DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /* onM */, | 102 | DateBookWeekLstDayHdr::DateBookWeekLstDayHdr(const QDate &d, bool /* onM */, |
103 | QWidget* parent, | 103 | QWidget* parent, |
104 | const char* name, | 104 | const char* name, |
105 | WFlags fl ) | 105 | WFlags fl ) |
106 | : DateBookWeekLstDayHdrBase(parent, name, fl) { | 106 | : DateBookWeekLstDayHdrBase(parent, name, fl) { |
107 | 107 | ||
108 | date=d; | 108 | date=d; |
109 | 109 | ||
110 | static const QString wdays=tr("MTWTFSSM", "Week days"); | 110 | static const QString wdays=tr("MTWTFSSM", "Week days"); |
111 | char day=wdays[d.dayOfWeek()-1]; | 111 | char day=wdays[d.dayOfWeek()-1]; |
112 | 112 | ||
113 | //dont use dayOfWeek() to save space ! | 113 | //dont use dayOfWeek() to save space ! |
114 | label->setText( QString(QObject::tr(QString(QChar(day)))) + " " +QString::number(d.day()) ); | 114 | label->setText( QString(QObject::tr(QString(QChar(day)))) + " " +QString::number(d.day()) ); |
115 | 115 | ||
116 | add->setText("+"); | 116 | add->setText("+"); |
117 | 117 | ||
118 | if (d == QDate::currentDate()) { | 118 | if (d == QDate::currentDate()) { |
119 | QPalette pal=label->palette(); | 119 | QPalette pal=label->palette(); |
120 | pal.setColor(QColorGroup::Foreground, QColor(0,0,255)); | 120 | pal.setColor(QColorGroup::Foreground, QColor(0,0,255)); |
121 | label->setPalette(pal); | 121 | label->setPalette(pal); |
122 | 122 | ||
123 | /* | 123 | /* |
124 | QFont f=label->font(); | 124 | QFont f=label->font(); |
125 | f.setItalic(true); | 125 | f.setItalic(true); |
126 | label->setFont(f); | 126 | label->setFont(f); |
127 | label->setPalette(QPalette(QColor(0,0,255),label->backgroundColor())); | 127 | label->setPalette(QPalette(QColor(0,0,255),label->backgroundColor())); |
128 | */ | 128 | */ |
129 | } else if (d.dayOfWeek() == 7) { // FIXME: Match any holiday | 129 | } else if (d.dayOfWeek() == 7) { // FIXME: Match any holiday |
130 | QPalette pal=label->palette(); | 130 | QPalette pal=label->palette(); |
131 | pal.setColor(QColorGroup::Foreground, QColor(255,0,0)); | 131 | pal.setColor(QColorGroup::Foreground, QColor(255,0,0)); |
132 | label->setPalette(pal); | 132 | label->setPalette(pal); |
133 | } | 133 | } |
134 | 134 | ||
135 | connect (label, SIGNAL(clicked()), this, SLOT(showDay())); | 135 | connect (label, SIGNAL(clicked()), this, SLOT(showDay())); |
136 | connect (add, SIGNAL(clicked()), this, SLOT(newEvent())); | 136 | connect (add, SIGNAL(clicked()), this, SLOT(newEvent())); |
137 | } | 137 | } |
138 | 138 | ||
139 | void DateBookWeekLstDayHdr::showDay() { | 139 | void DateBookWeekLstDayHdr::showDay() { |
140 | emit showDate(date.year(), date.month(), date.day()); | 140 | emit showDate(date.year(), date.month(), date.day()); |
141 | } | 141 | } |
142 | 142 | ||
143 | void DateBookWeekLstDayHdr::newEvent() { | 143 | void DateBookWeekLstDayHdr::newEvent() { |
144 | QDateTime start, stop; | 144 | QDateTime start, stop; |
145 | start=stop=date; | 145 | start=stop=date; |
146 | start.setTime(QTime(10,0)); | 146 | start.setTime(QTime(10,0)); |
147 | stop.setTime(QTime(12,0)); | 147 | stop.setTime(QTime(12,0)); |
148 | 148 | ||
149 | emit addEvent(start,stop,"",0); | 149 | emit addEvent(start,stop,"",0); |
150 | } | 150 | } |
151 | DateBookWeekLstEvent::DateBookWeekLstEvent(const EffectiveEvent &ev, | 151 | DateBookWeekLstEvent::DateBookWeekLstEvent(const EffectiveEvent &ev, |
152 | int weeklistviewconfig, | 152 | int weeklistviewconfig, |
153 | QWidget* parent, | 153 | QWidget* parent, |
154 | const char* name, | 154 | const char* name, |
155 | WFlags fl ) : OClickableLabel(parent,name,fl), event(ev) | 155 | WFlags fl ) : OClickableLabel(parent,name,fl), event(ev) |
156 | { | 156 | { |
157 | // old values... lastday = "__|__", middle=" |---", Firstday="00:00", | 157 | // old values... lastday = "__|__", middle=" |---", Firstday="00:00", |
158 | QString s,start,middle,end,day; | 158 | QString s,start,middle,end,day; |
159 | 159 | ||
160 | qDebug("weeklistviewconfig=%d",weeklistviewconfig); | 160 | qDebug("weeklistviewconfig=%d",weeklistviewconfig); |
161 | if(weeklistviewconfig==NONE) {// No times displayed. | 161 | if(weeklistviewconfig==NONE) {// No times displayed. |
162 | // start.sprintf("%.2d:%.2d-",ev.start().hour(),ev.start().minute()); | 162 | // start.sprintf("%.2d:%.2d-",ev.start().hour(),ev.start().minute()); |
163 | // middle.sprintf("<--->"); | 163 | // middle.sprintf("<--->"); |
164 | // end.sprintf("-%.2d:%.2d",ev.end().hour(),ev.end().minute()); | 164 | // end.sprintf("-%.2d:%.2d",ev.end().hour(),ev.end().minute()); |
165 | // day.sprintf("%.2d:%.2d-%.2d:%.2d",ev.start().hour(),ev.start().minute(),ev.end().hour(),ev.end().minute()); | 165 | // day.sprintf("%.2d:%.2d-%.2d:%.2d",ev.start().hour(),ev.start().minute(),ev.end().hour(),ev.end().minute()); |
166 | } else if(weeklistviewconfig==NORMAL) {// "Normal", only display start time. | 166 | } else if(weeklistviewconfig==NORMAL) {// "Normal", only display start time. |
167 | start.sprintf("%.2d:%.2d",ev.start().hour(),ev.start().minute()); | 167 | start.sprintf("%.2d:%.2d",ev.start().hour(),ev.start().minute()); |
168 | middle.sprintf(" |---"); | 168 | middle.sprintf(" |---"); |
169 | end.sprintf("__|__"); | 169 | end.sprintf("__|__"); |
170 | day.sprintf("%.2d:%.2d",ev.start().hour(),ev.start().minute()); | 170 | day.sprintf("%.2d:%.2d",ev.start().hour(),ev.start().minute()); |
171 | } else if(weeklistviewconfig==EXTENDED) { // Extended mode, display start and end times. | 171 | } else if(weeklistviewconfig==EXTENDED) { // Extended mode, display start and end times. |
172 | start.sprintf("%.2d:%.2d-",ev.start().hour(),ev.start().minute()); | 172 | start.sprintf("%.2d:%.2d-",ev.start().hour(),ev.start().minute()); |
173 | middle.sprintf("<--->"); | 173 | middle.sprintf("<--->"); |
174 | end.sprintf("-%.2d:%.2d",ev.end().hour(),ev.end().minute()); | 174 | end.sprintf("-%.2d:%.2d",ev.end().hour(),ev.end().minute()); |
175 | day.sprintf("%.2d:%.2d-%.2d:%.2d",ev.start().hour(),ev.start().minute(),ev.end().hour(),ev.end().minute()); | 175 | day.sprintf("%.2d:%.2d-%.2d:%.2d",ev.start().hour(),ev.start().minute(),ev.end().hour(),ev.end().minute()); |
176 | } | 176 | } |
177 | 177 | ||
178 | if(ev.event().type() == Event::Normal) { | 178 | if(ev.event().type() == Event::Normal) { |
179 | if(ev.startDate()==ev.date() && ev.endDate()==ev.date()) {// day event. | 179 | if(ev.startDate()==ev.date() && ev.endDate()==ev.date()) {// day event. |
180 | s=day; | 180 | s=day; |
181 | } else if(ev.startDate()==ev.date()) {// start event. | 181 | } else if(ev.startDate()==ev.date()) {// start event. |
182 | s=start; | 182 | s=start; |
183 | } else if(ev.endDate()==ev.date()) { // end event. | 183 | } else if(ev.endDate()==ev.date()) { // end event. |
184 | s=end; | 184 | s=end; |
185 | } else {// middle day. | 185 | } else {// middle day. |
186 | s=middle; | 186 | s=middle; |
187 | } | 187 | } |
188 | } else { | 188 | } else { |
189 | s=""; | 189 | s=""; |
190 | } | 190 | } |
191 | setText(QString(s) + " " + ev.description()); | 191 | setText(QString(s) + " " + ev.description()); |
192 | connect(this, SIGNAL(clicked()), this, SLOT(editMe())); | 192 | connect(this, SIGNAL(clicked()), this, SLOT(editMe())); |
193 | setAlignment( int( QLabel::WordBreak | QLabel::AlignLeft ) ); | 193 | setAlignment( int( QLabel::WordBreak | QLabel::AlignLeft ) ); |
194 | } | 194 | } |
195 | void DateBookWeekLstEvent::editMe() { | 195 | void DateBookWeekLstEvent::editMe() { |
196 | emit editEvent(event.event()); | 196 | emit editEvent(event.event()); |
197 | } | 197 | } |
198 | 198 | ||
199 | 199 | ||
200 | DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev, | 200 | DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev, |
201 | const QDate &d, bool onM, | 201 | const QDate &d, bool onM, |
202 | QWidget* parent, | 202 | QWidget* parent, |
203 | const char* name, WFlags fl) | 203 | const char* name, WFlags fl) |
204 | : QWidget( parent, name, fl ) | 204 | : QWidget( parent, name, fl ) |
205 | { | 205 | { |
206 | Config config("DateBook"); | 206 | Config config("DateBook"); |
207 | config.setGroup("Main"); | 207 | config.setGroup("Main"); |
208 | int weeklistviewconfig=config.readNumEntry("weeklistviewconfig", NORMAL); | 208 | int weeklistviewconfig=config.readNumEntry("weeklistviewconfig", NORMAL); |
209 | qDebug("Read weeklistviewconfig: %d",weeklistviewconfig); | 209 | qDebug("Read weeklistviewconfig: %d",weeklistviewconfig); |
210 | 210 | ||
211 | bStartOnMonday=onM; | 211 | bStartOnMonday=onM; |
212 | setPalette(white); | 212 | setPalette(white); |
213 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding)); | 213 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding)); |
214 | 214 | ||
215 | QVBoxLayout *layout = new QVBoxLayout( this ); | 215 | QVBoxLayout *layout = new QVBoxLayout( this ); |
216 | 216 | ||
217 | qBubbleSort(ev); | 217 | qBubbleSort(ev); |
218 | QValueListIterator<EffectiveEvent> it; | 218 | QValueListIterator<EffectiveEvent> it; |
219 | it=ev.begin(); | 219 | it=ev.begin(); |
220 | 220 | ||
221 | int dayOrder[7]; | 221 | int dayOrder[7]; |
222 | if (bStartOnMonday) { | 222 | if (bStartOnMonday) { |
223 | for (int d=0; d<7; d++) dayOrder[d]=d+1; | 223 | for (int d=0; d<7; d++) dayOrder[d]=d+1; |
224 | } else { | 224 | } else { |
225 | for (int d=0; d<7; d++) dayOrder[d]=d; | 225 | for (int d=0; d<7; d++) dayOrder[d]=d; |
226 | dayOrder[0]=7; | 226 | dayOrder[0]=7; |
227 | } | 227 | } |
228 | 228 | ||
229 | // Calculate offset to first day of week. | 229 | // Calculate offset to first day of week. |
230 | int dayoffset=d.dayOfWeek(); | 230 | int dayoffset=d.dayOfWeek(); |
231 | if(bStartOnMonday) dayoffset--; | 231 | if(bStartOnMonday) dayoffset--; |
232 | else if( dayoffset == 7 ) dayoffset = 0; | 232 | else if( dayoffset == 7 ) dayoffset = 0; |
233 | 233 | ||
234 | for (int i=0; i<7; i++) { | 234 | for (int i=0; i<7; i++) { |
235 | // Header | 235 | // Header |
236 | DateBookWeekLstDayHdr *hdr=new DateBookWeekLstDayHdr(d.addDays(i-dayoffset), bStartOnMonday,this); | 236 | DateBookWeekLstDayHdr *hdr=new DateBookWeekLstDayHdr(d.addDays(i-dayoffset), bStartOnMonday,this); |
237 | connect(hdr, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); | 237 | connect(hdr, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); |
238 | connect(hdr, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), | 238 | connect(hdr, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)), |
239 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); | 239 | this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&))); |
240 | layout->addWidget(hdr); | 240 | layout->addWidget(hdr); |
241 | 241 | ||
242 | // Events | 242 | // Events |
243 | while ( (*it).date().dayOfWeek() == dayOrder[i] && it!=ev.end() ) { | 243 | while ( (*it).date().dayOfWeek() == dayOrder[i] && it!=ev.end() ) { |
244 | if(!(((*it).end().hour()==0) && ((*it).end().minute()==0) && ((*it).startDate()!=(*it).date()))) {// Skip events ending at 00:00 starting at another day. | 244 | if(!(((*it).end().hour()==0) && ((*it).end().minute()==0) && ((*it).startDate()!=(*it).date()))) {// Skip events ending at 00:00 starting at another day. |
245 | DateBookWeekLstEvent *l=new DateBookWeekLstEvent(*it,weeklistviewconfig,this); | 245 | DateBookWeekLstEvent *l=new DateBookWeekLstEvent(*it,weeklistviewconfig,this); |
246 | layout->addWidget(l); | 246 | layout->addWidget(l); |
247 | connect (l, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); | 247 | connect (l, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&))); |
248 | } | 248 | } |
249 | it++; | 249 | it++; |
250 | } | 250 | } |
251 | layout->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding)); | 251 | layout->addItem(new QSpacerItem(1,1, QSizePolicy::Minimum, QSizePolicy::Expanding)); |
252 | } | 252 | } |
253 | } | 253 | } |
254 | DateBookWeekLstView::~DateBookWeekLstView(){} | 254 | DateBookWeekLstView::~DateBookWeekLstView(){} |
255 | void DateBookWeekLstView::keyPressEvent(QKeyEvent *e) {e->ignore();} | 255 | void DateBookWeekLstView::keyPressEvent(QKeyEvent *e) {e->ignore();} |
256 | 256 | ||
257 | DateBookWeekLstDblView::DateBookWeekLstDblView(QValueList<EffectiveEvent> &ev1, | 257 | DateBookWeekLstDblView::DateBookWeekLstDblView(QValueList<EffectiveEvent> &ev1, |
258 | QValueList<EffectiveEvent> &ev2, | 258 | QValueList<EffectiveEvent> &ev2, |
259 | QDate &d, bool onM, | 259 | QDate &d, bool onM, |
260 | QWidget* parent, | 260 | QWidget* parent, |
261 | const char* name, WFlags fl) | 261 | const char* name, WFlags fl) |
262 | : QWidget( parent, name, fl ) | 262 | : QWidget( parent, name, fl ) |
263 | { | 263 | { |
264 | QHBoxLayout *layout = new QHBoxLayout( this ); | 264 | QHBoxLayout *layout = new QHBoxLayout( this ); |
265 | 265 | ||
266 | DateBookWeekLstView *w=new DateBookWeekLstView(ev1,d,onM,this); | 266 | DateBookWeekLstView *w=new DateBookWeekLstView(ev1,d,onM,this); |
267 | layout->addWidget(w); | 267 | layout->addWidget(w); |
268 | connect (w, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); | 268 | connect (w, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&))); |
269 | connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); | 269 | connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); |
270 | connect (w, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &,const QString &)), | 270 | connect (w, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)), |
271 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); | 271 | this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&))); |
272 | 272 | ||
273 | 273 | ||
274 | w=new DateBookWeekLstView(ev2,d.addDays(7),onM,this); | 274 | w=new DateBookWeekLstView(ev2,d.addDays(7),onM,this); |
275 | layout->addWidget(w); | 275 | layout->addWidget(w); |
276 | connect (w, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); | 276 | connect (w, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&))); |
277 | connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); | 277 | connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); |
278 | connect (w, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), | 278 | connect (w, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)), |
279 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); | 279 | this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&))); |
280 | } | 280 | } |
281 | 281 | ||
282 | DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB, | 282 | DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB, |
283 | QWidget *parent, | 283 | QWidget *parent, |
284 | const char *name ) | 284 | const char *name ) |
285 | : QWidget( parent, name ), | 285 | : QWidget( parent, name ), |
286 | db( newDB ), | 286 | db( newDB ), |
287 | startTime( 0 ), | 287 | startTime( 0 ), |
288 | ampm( ap ), | 288 | ampm( ap ), |
289 | bStartOnMonday(onM) | 289 | bStartOnMonday(onM) |
290 | { | 290 | { |
291 | setFocusPolicy(StrongFocus); | 291 | setFocusPolicy(StrongFocus); |
292 | layout = new QVBoxLayout( this ); | 292 | layout = new QVBoxLayout( this ); |
293 | layout->setMargin(0); | 293 | layout->setMargin(0); |
294 | 294 | ||
295 | header=new DateBookWeekLstHeader(onM, this); | 295 | header=new DateBookWeekLstHeader(onM, this); |
296 | layout->addWidget( header ); | 296 | layout->addWidget( header ); |
297 | connect(header, SIGNAL(dateChanged(QDate &)), this, SLOT(dateChanged(QDate &))); | 297 | connect(header, SIGNAL(dateChanged(QDate&)), this, SLOT(dateChanged(QDate&))); |
298 | connect(header, SIGNAL(setDbl(bool)), this, SLOT(setDbl(bool))); | 298 | connect(header, SIGNAL(setDbl(bool)), this, SLOT(setDbl(bool))); |
299 | 299 | ||
300 | scroll=new QScrollView(this); | 300 | scroll=new QScrollView(this); |
301 | scroll->setResizePolicy(QScrollView::AutoOneFit); | 301 | scroll->setResizePolicy(QScrollView::AutoOneFit); |
302 | layout->addWidget(scroll); | 302 | layout->addWidget(scroll); |
303 | 303 | ||
304 | view=NULL; | 304 | view=NULL; |
305 | Config config("DateBook"); | 305 | Config config("DateBook"); |
306 | config.setGroup("Main"); | 306 | config.setGroup("Main"); |
307 | dbl=config.readBoolEntry("weeklst_dbl", false); | 307 | dbl=config.readBoolEntry("weeklst_dbl", false); |
308 | header->dbl->setOn(dbl); | 308 | header->dbl->setOn(dbl); |
309 | } | 309 | } |
310 | DateBookWeekLst::~DateBookWeekLst(){ | 310 | DateBookWeekLst::~DateBookWeekLst(){ |
311 | Config config("DateBook"); | 311 | Config config("DateBook"); |
312 | config.setGroup("Main"); | 312 | config.setGroup("Main"); |
313 | config.writeEntry("weeklst_dbl", dbl); | 313 | config.writeEntry("weeklst_dbl", dbl); |
314 | } | 314 | } |
315 | 315 | ||
316 | void DateBookWeekLst::setDate(const QDate &d) { | 316 | void DateBookWeekLst::setDate(const QDate &d) { |
317 | bdate=d; | 317 | bdate=d; |
318 | header->setDate(d); | 318 | header->setDate(d); |
319 | } | 319 | } |
320 | 320 | ||
321 | void DateBookWeekLst::setDbl(bool on) { | 321 | void DateBookWeekLst::setDbl(bool on) { |
322 | dbl=on; | 322 | dbl=on; |
323 | redraw(); | 323 | redraw(); |
324 | } | 324 | } |
325 | void DateBookWeekLst::redraw() {getEvents();} | 325 | void DateBookWeekLst::redraw() {getEvents();} |
326 | 326 | ||
327 | QDate DateBookWeekLst::date() { | 327 | QDate DateBookWeekLst::date() { |
328 | return bdate; | 328 | return bdate; |
329 | } | 329 | } |
330 | 330 | ||
331 | // return the date at the beginning of the week... | 331 | // return the date at the beginning of the week... |
332 | // copied from DateBookWeek | 332 | // copied from DateBookWeek |
333 | QDate DateBookWeekLst::weekDate() const | 333 | QDate DateBookWeekLst::weekDate() const |
334 | { | 334 | { |
335 | QDate d=bdate; | 335 | QDate d=bdate; |
336 | 336 | ||
337 | // Calculate offset to first day of week. | 337 | // Calculate offset to first day of week. |
338 | int dayoffset=d.dayOfWeek(); | 338 | int dayoffset=d.dayOfWeek(); |
339 | if(bStartOnMonday) dayoffset--; | 339 | if(bStartOnMonday) dayoffset--; |
340 | else if( dayoffset == 7 ) | 340 | else if( dayoffset == 7 ) |
341 | dayoffset = 0; | 341 | dayoffset = 0; |
342 | 342 | ||
343 | return d.addDays(-dayoffset); | 343 | return d.addDays(-dayoffset); |
344 | } | 344 | } |
345 | 345 | ||
346 | void DateBookWeekLst::getEvents() { | 346 | void DateBookWeekLst::getEvents() { |
347 | QDate start = weekDate(); //date(); | 347 | QDate start = weekDate(); //date(); |
348 | QDate stop = start.addDays(6); | 348 | QDate stop = start.addDays(6); |
349 | QValueList<EffectiveEvent> el = db->getEffectiveEvents(start, stop); | 349 | QValueList<EffectiveEvent> el = db->getEffectiveEvents(start, stop); |
350 | 350 | ||
351 | if (view) delete view; | 351 | if (view) delete view; |
352 | if (dbl) { | 352 | if (dbl) { |
353 | QDate start2=start.addDays(7); | 353 | QDate start2=start.addDays(7); |
354 | stop=start2.addDays(6); | 354 | stop=start2.addDays(6); |
355 | QValueList<EffectiveEvent> el2 = db->getEffectiveEvents(start2, stop); | 355 | QValueList<EffectiveEvent> el2 = db->getEffectiveEvents(start2, stop); |
356 | view=new DateBookWeekLstDblView(el,el2,start,bStartOnMonday,scroll); | 356 | view=new DateBookWeekLstDblView(el,el2,start,bStartOnMonday,scroll); |
357 | } else { | 357 | } else { |
358 | view=new DateBookWeekLstView(el,start,bStartOnMonday,scroll); | 358 | view=new DateBookWeekLstView(el,start,bStartOnMonday,scroll); |
359 | } | 359 | } |
360 | 360 | ||
361 | connect (view, SIGNAL(editEvent(const Event &)), this, SIGNAL(editEvent(const Event &))); | 361 | connect (view, SIGNAL(editEvent(const Event&)), this, SIGNAL(editEvent(const Event&))); |
362 | connect (view, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); | 362 | connect (view, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); |
363 | connect (view, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &)), | 363 | connect (view, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)), |
364 | this, SIGNAL(addEvent(const QDateTime &, const QDateTime &, const QString &, const QString &))); | 364 | this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&))); |
365 | 365 | ||
366 | scroll->addChild(view); | 366 | scroll->addChild(view); |
367 | view->show(); | 367 | view->show(); |
368 | scroll->updateScrollBars(); | 368 | scroll->updateScrollBars(); |
369 | } | 369 | } |
370 | 370 | ||
371 | void DateBookWeekLst::dateChanged(QDate &newdate) { | 371 | void DateBookWeekLst::dateChanged(QDate &newdate) { |
372 | bdate=newdate; | 372 | bdate=newdate; |
373 | getEvents(); | 373 | getEvents(); |
374 | } | 374 | } |
375 | 375 | ||
376 | void DateBookWeekLst::keyPressEvent(QKeyEvent *e) | 376 | void DateBookWeekLst::keyPressEvent(QKeyEvent *e) |
377 | { | 377 | { |
378 | switch(e->key()) { | 378 | switch(e->key()) { |
379 | case Key_Up: | 379 | case Key_Up: |
380 | scroll->scrollBy(0, -20); | 380 | scroll->scrollBy(0, -20); |
381 | break; | 381 | break; |
382 | case Key_Down: | 382 | case Key_Down: |
383 | scroll->scrollBy(0, 20); | 383 | scroll->scrollBy(0, 20); |
384 | break; | 384 | break; |
385 | case Key_Left: | 385 | case Key_Left: |
386 | header->prevWeek(); | 386 | header->prevWeek(); |
387 | break; | 387 | break; |
388 | case Key_Right: | 388 | case Key_Right: |
389 | header->nextWeek(); | 389 | header->nextWeek(); |
390 | break; | 390 | break; |
391 | default: | 391 | default: |
392 | e->ignore(); | 392 | e->ignore(); |
393 | } | 393 | } |
394 | } | 394 | } |
diff --git a/core/pim/datebook/dateentryimpl.cpp b/core/pim/datebook/dateentryimpl.cpp index 018bb5a..57bcd89 100644 --- a/core/pim/datebook/dateentryimpl.cpp +++ b/core/pim/datebook/dateentryimpl.cpp | |||
@@ -97,215 +97,215 @@ static void addOrPick( QComboBox* combo, const QString& t ) | |||
97 | } | 97 | } |
98 | 98 | ||
99 | // Else add one | 99 | // Else add one |
100 | combo->insertItem(t); | 100 | combo->insertItem(t); |
101 | combo->setCurrentItem(combo->count()-1); | 101 | combo->setCurrentItem(combo->count()-1); |
102 | } | 102 | } |
103 | 103 | ||
104 | DateEntry::DateEntry( bool startOnMonday, const Event &event, bool whichClock, | 104 | DateEntry::DateEntry( bool startOnMonday, const Event &event, bool whichClock, |
105 | QWidget* parent, const char* name ) | 105 | QWidget* parent, const char* name ) |
106 | : DateEntryBase( parent, name ), | 106 | : DateEntryBase( parent, name ), |
107 | ampm( whichClock ), | 107 | ampm( whichClock ), |
108 | startWeekOnMonday( startOnMonday ), | 108 | startWeekOnMonday( startOnMonday ), |
109 | m_showStart(true) | 109 | m_showStart(true) |
110 | 110 | ||
111 | { | 111 | { |
112 | init(); | 112 | init(); |
113 | setDates(event.start(),event.end()); | 113 | setDates(event.start(),event.end()); |
114 | comboCategory->setCategories( event.categories(), "Calendar", tr("Calendar") ); | 114 | comboCategory->setCategories( event.categories(), "Calendar", tr("Calendar") ); |
115 | if(!event.description().isEmpty()) | 115 | if(!event.description().isEmpty()) |
116 | addOrPick( comboDescription, event.description() ); | 116 | addOrPick( comboDescription, event.description() ); |
117 | if(!event.location().isEmpty()) | 117 | if(!event.location().isEmpty()) |
118 | addOrPick( comboLocation, event.location() ); | 118 | addOrPick( comboLocation, event.location() ); |
119 | checkAlarm->setChecked( event.hasAlarm() ); | 119 | checkAlarm->setChecked( event.hasAlarm() ); |
120 | checkAllDay->setChecked( event.type() == Event::AllDay ); | 120 | checkAllDay->setChecked( event.type() == Event::AllDay ); |
121 | if(!event.notes().isEmpty()) noteStr=event.notes(); | 121 | if(!event.notes().isEmpty()) noteStr=event.notes(); |
122 | else noteStr=""; | 122 | else noteStr=""; |
123 | spinAlarm->setValue(event.alarmTime()); | 123 | spinAlarm->setValue(event.alarmTime()); |
124 | if ( event.alarmSound() != Event::Silent ) | 124 | if ( event.alarmSound() != Event::Silent ) |
125 | comboSound->setCurrentItem( 1 ); | 125 | comboSound->setCurrentItem( 1 ); |
126 | if ( event.hasRepeat() ) { | 126 | if ( event.hasRepeat() ) { |
127 | rp = event.repeatPattern(); | 127 | rp = event.repeatPattern(); |
128 | cmdRepeat->setText( tr("Repeat...") ); | 128 | cmdRepeat->setText( tr("Repeat...") ); |
129 | } | 129 | } |
130 | setRepeatLabel(); | 130 | setRepeatLabel(); |
131 | } | 131 | } |
132 | 132 | ||
133 | void DateEntry::setDates( const QDateTime& s, const QDateTime& e ) | 133 | void DateEntry::setDates( const QDateTime& s, const QDateTime& e ) |
134 | { | 134 | { |
135 | startDate = s.date(); | 135 | startDate = s.date(); |
136 | endDate = e.date(); | 136 | endDate = e.date(); |
137 | startTime = s.time(); | 137 | startTime = s.time(); |
138 | endTime = e.time(); | 138 | endTime = e.time(); |
139 | 139 | ||
140 | startDateChanged( s.date().year(), s.date().month(), s.date().day() ); | 140 | startDateChanged( s.date().year(), s.date().month(), s.date().day() ); |
141 | endDateChanged( e.date().year(), e.date().month(), e.date().day() ); | 141 | endDateChanged( e.date().year(), e.date().month(), e.date().day() ); |
142 | 142 | ||
143 | updateTimeEdit(true,true); | 143 | updateTimeEdit(true,true); |
144 | } | 144 | } |
145 | 145 | ||
146 | void DateEntry::updateTimeEdit(bool s, bool e) { | 146 | void DateEntry::updateTimeEdit(bool s, bool e) { |
147 | 147 | ||
148 | // Comboboxes | 148 | // Comboboxes |
149 | QString strStart, strEnd; | 149 | QString strStart, strEnd; |
150 | int shour, ehour; | 150 | int shour, ehour; |
151 | if ( ampm ) { | 151 | if ( ampm ) { |
152 | shour = startTime.hour(); | 152 | shour = startTime.hour(); |
153 | ehour = endTime.hour(); | 153 | ehour = endTime.hour(); |
154 | if ( shour >= 12 ) { | 154 | if ( shour >= 12 ) { |
155 | if ( shour > 12 ) | 155 | if ( shour > 12 ) |
156 | shour -= 12; | 156 | shour -= 12; |
157 | strStart.sprintf( "%d:%02d PM", shour, startTime.minute() ); | 157 | strStart.sprintf( "%d:%02d PM", shour, startTime.minute() ); |
158 | } else { | 158 | } else { |
159 | if ( shour == 0 ) | 159 | if ( shour == 0 ) |
160 | shour = 12; | 160 | shour = 12; |
161 | strStart.sprintf( "%d:%02d AM", shour, startTime.minute() ); | 161 | strStart.sprintf( "%d:%02d AM", shour, startTime.minute() ); |
162 | } | 162 | } |
163 | if ( ehour == 24 && endTime.minute() == 0 ) { | 163 | if ( ehour == 24 && endTime.minute() == 0 ) { |
164 | strEnd = "11:59 PM"; // or "midnight" | 164 | strEnd = "11:59 PM"; // or "midnight" |
165 | } else if ( ehour >= 12 ) { | 165 | } else if ( ehour >= 12 ) { |
166 | if ( ehour > 12 ) | 166 | if ( ehour > 12 ) |
167 | ehour -= 12; | 167 | ehour -= 12; |
168 | strEnd.sprintf( "%d:%02d PM", ehour, endTime.minute() ); | 168 | strEnd.sprintf( "%d:%02d PM", ehour, endTime.minute() ); |
169 | } else { | 169 | } else { |
170 | if ( ehour == 0 ) | 170 | if ( ehour == 0 ) |
171 | ehour = 12; | 171 | ehour = 12; |
172 | strEnd.sprintf( "%d:%02d AM", ehour, endTime.minute() ); | 172 | strEnd.sprintf( "%d:%02d AM", ehour, endTime.minute() ); |
173 | } | 173 | } |
174 | } else { | 174 | } else { |
175 | strStart.sprintf( "%02d:%02d", startTime.hour(), startTime.minute() ); | 175 | strStart.sprintf( "%02d:%02d", startTime.hour(), startTime.minute() ); |
176 | strEnd.sprintf( "%02d:%02d", endTime.hour(), endTime.minute() ); | 176 | strEnd.sprintf( "%02d:%02d", endTime.hour(), endTime.minute() ); |
177 | } | 177 | } |
178 | 178 | ||
179 | if (s) comboStart->setText(strStart); | 179 | if (s) comboStart->setText(strStart); |
180 | if (e) comboEnd->setText(strEnd); | 180 | if (e) comboEnd->setText(strEnd); |
181 | } | 181 | } |
182 | 182 | ||
183 | void DateEntry::init() | 183 | void DateEntry::init() |
184 | { | 184 | { |
185 | comboDescription->setInsertionPolicy(QComboBox::AtCurrent); | 185 | comboDescription->setInsertionPolicy(QComboBox::AtCurrent); |
186 | comboLocation->setInsertionPolicy(QComboBox::AtCurrent); | 186 | comboLocation->setInsertionPolicy(QComboBox::AtCurrent); |
187 | 187 | ||
188 | initCombos(); | 188 | initCombos(); |
189 | QPopupMenu *m1 = new QPopupMenu( this ); | 189 | QPopupMenu *m1 = new QPopupMenu( this ); |
190 | startPicker = new DateBookMonth( m1, 0, TRUE ); | 190 | startPicker = new DateBookMonth( m1, 0, TRUE ); |
191 | m1->insertItem( startPicker ); | 191 | m1->insertItem( startPicker ); |
192 | buttonStart->setPopup( m1 ); | 192 | buttonStart->setPopup( m1 ); |
193 | connect( startPicker, SIGNAL( dateClicked( int, int, int ) ), | 193 | connect( startPicker, SIGNAL( dateClicked(int,int,int) ), |
194 | this, SLOT( startDateChanged( int, int, int ) ) ); | 194 | this, SLOT( startDateChanged(int,int,int) ) ); |
195 | 195 | ||
196 | //Let start button change both start and end dates | 196 | //Let start button change both start and end dates |
197 | connect( startPicker, SIGNAL( dateClicked( int, int, int ) ), | 197 | connect( startPicker, SIGNAL( dateClicked(int,int,int) ), |
198 | this, SLOT( endDateChanged( int, int, int ) ) ); | 198 | this, SLOT( endDateChanged(int,int,int) ) ); |
199 | connect( qApp, SIGNAL( clockChanged( bool ) ), | 199 | connect( qApp, SIGNAL( clockChanged(bool) ), |
200 | this, SLOT( slotChangeClock( bool ) ) ); | 200 | this, SLOT( slotChangeClock(bool) ) ); |
201 | connect( qApp, SIGNAL(weekChanged(bool)), | 201 | connect( qApp, SIGNAL(weekChanged(bool)), |
202 | this, SLOT(slotChangeStartOfWeek(bool)) ); | 202 | this, SLOT(slotChangeStartOfWeek(bool)) ); |
203 | 203 | ||
204 | connect( editNote, SIGNAL(clicked()), | 204 | connect( editNote, SIGNAL(clicked()), |
205 | this, SLOT(slotEditNote()) ); | 205 | this, SLOT(slotEditNote()) ); |
206 | 206 | ||
207 | QPopupMenu *m2 = new QPopupMenu( this ); | 207 | QPopupMenu *m2 = new QPopupMenu( this ); |
208 | endPicker = new DateBookMonth( m2, 0, TRUE ); | 208 | endPicker = new DateBookMonth( m2, 0, TRUE ); |
209 | m2->insertItem( endPicker ); | 209 | m2->insertItem( endPicker ); |
210 | buttonEnd->setPopup( m2 ); | 210 | buttonEnd->setPopup( m2 ); |
211 | connect( endPicker, SIGNAL( dateClicked( int, int, int ) ), | 211 | connect( endPicker, SIGNAL( dateClicked(int,int,int) ), |
212 | this, SLOT( endDateChanged( int, int, int ) ) ); | 212 | this, SLOT( endDateChanged(int,int,int) ) ); |
213 | 213 | ||
214 | connect(timePickerStart, SIGNAL( timeChanged(const QTime &) ), | 214 | connect(timePickerStart, SIGNAL( timeChanged(const QTime&) ), |
215 | this, SLOT( startTimePicked(const QTime &) )); | 215 | this, SLOT( startTimePicked(const QTime&) )); |
216 | // install eventFilters | 216 | // install eventFilters |
217 | comboEnd->installEventFilter( this ); | 217 | comboEnd->installEventFilter( this ); |
218 | comboStart->installEventFilter( this ); | 218 | comboStart->installEventFilter( this ); |
219 | } | 219 | } |
220 | 220 | ||
221 | /* | 221 | /* |
222 | * Destroys the object and frees any allocated resources | 222 | * Destroys the object and frees any allocated resources |
223 | */ | 223 | */ |
224 | DateEntry::~DateEntry() | 224 | DateEntry::~DateEntry() |
225 | { | 225 | { |
226 | // no need to delete child widgets, Qt does it all for us | 226 | // no need to delete child widgets, Qt does it all for us |
227 | //cout << "Del: " << comboStart->currentText() << endl; | 227 | //cout << "Del: " << comboStart->currentText() << endl; |
228 | } | 228 | } |
229 | 229 | ||
230 | /* | 230 | /* |
231 | * public slot | 231 | * public slot |
232 | */ | 232 | */ |
233 | 233 | ||
234 | void DateEntry::slotEditNote() { | 234 | void DateEntry::slotEditNote() { |
235 | QString s; | 235 | QString s; |
236 | s = "<B>"+ TimeString::longDateString( startDate ) + "</B>"; | 236 | s = "<B>"+ TimeString::longDateString( startDate ) + "</B>"; |
237 | // s.sprintf("<B>%d/%d</B> ", startDate.day(), startDate.month()); | 237 | // s.sprintf("<B>%d/%d</B> ", startDate.day(), startDate.month()); |
238 | NoteEntry noteDlg(s+comboDescription->currentText(), noteStr, | 238 | NoteEntry noteDlg(s+comboDescription->currentText(), noteStr, |
239 | this,0,TRUE); | 239 | this,0,TRUE); |
240 | 240 | ||
241 | if ( QPEApplication::execDialog( ¬eDlg ) ) { | 241 | if ( QPEApplication::execDialog( ¬eDlg ) ) { |
242 | noteStr=noteDlg.note->text(); | 242 | noteStr=noteDlg.note->text(); |
243 | } | 243 | } |
244 | 244 | ||
245 | } | 245 | } |
246 | 246 | ||
247 | void DateEntry::endDateChanged( int y, int m, int d ) | 247 | void DateEntry::endDateChanged( int y, int m, int d ) |
248 | { | 248 | { |
249 | endDate.setYMD( y, m, d ); | 249 | endDate.setYMD( y, m, d ); |
250 | if ( endDate < startDate ) { | 250 | if ( endDate < startDate ) { |
251 | endDate = startDate; | 251 | endDate = startDate; |
252 | } | 252 | } |
253 | 253 | ||
254 | buttonEnd->setText( TimeString::shortDate( endDate ) ); | 254 | buttonEnd->setText( TimeString::shortDate( endDate ) ); |
255 | 255 | ||
256 | endPicker->setDate( endDate.year(), endDate.month(), endDate.day() ); | 256 | endPicker->setDate( endDate.year(), endDate.month(), endDate.day() ); |
257 | } | 257 | } |
258 | 258 | ||
259 | static QTime parseTime( const QString& s, bool ampm ) | 259 | static QTime parseTime( const QString& s, bool ampm ) |
260 | { | 260 | { |
261 | QTime tmpTime; | 261 | QTime tmpTime; |
262 | QStringList l = QStringList::split( ':', s ); | 262 | QStringList l = QStringList::split( ':', s ); |
263 | int hour = l[0].toInt(); | 263 | int hour = l[0].toInt(); |
264 | if ( ampm ) { | 264 | if ( ampm ) { |
265 | int i=0; | 265 | int i=0; |
266 | while (i<int(l[1].length()) && l[1][i]>='0' && l[1][i]<='9') | 266 | while (i<int(l[1].length()) && l[1][i]>='0' && l[1][i]<='9') |
267 | i++; | 267 | i++; |
268 | QString digits = l[1].left(i); | 268 | QString digits = l[1].left(i); |
269 | if ( l[1].contains( "PM", FALSE ) ) { | 269 | if ( l[1].contains( "PM", FALSE ) ) { |
270 | if ( hour != 12 ) | 270 | if ( hour != 12 ) |
271 | hour += 12; | 271 | hour += 12; |
272 | } else { | 272 | } else { |
273 | if ( hour == 12 ) | 273 | if ( hour == 12 ) |
274 | hour = 0; | 274 | hour = 0; |
275 | } | 275 | } |
276 | l[1] = digits; | 276 | l[1] = digits; |
277 | } | 277 | } |
278 | int minute = l[1].toInt(); | 278 | int minute = l[1].toInt(); |
279 | if ( minute > 59 ) | 279 | if ( minute > 59 ) |
280 | minute = 59; | 280 | minute = 59; |
281 | else if ( minute < 0 ) | 281 | else if ( minute < 0 ) |
282 | minute = 0; | 282 | minute = 0; |
283 | if ( hour > 23 ) { | 283 | if ( hour > 23 ) { |
284 | hour = 23; | 284 | hour = 23; |
285 | minute = 59; | 285 | minute = 59; |
286 | } else if ( hour < 0 ) | 286 | } else if ( hour < 0 ) |
287 | hour = 0; | 287 | hour = 0; |
288 | tmpTime.setHMS( hour, minute, 0 ); | 288 | tmpTime.setHMS( hour, minute, 0 ); |
289 | return tmpTime; | 289 | return tmpTime; |
290 | } | 290 | } |
291 | 291 | ||
292 | /* | 292 | /* |
293 | * public slot | 293 | * public slot |
294 | */ | 294 | */ |
295 | void DateEntry::endTimeChanged( const QString &s ) | 295 | void DateEntry::endTimeChanged( const QString &s ) |
296 | { | 296 | { |
297 | endTimeChanged( parseTime(s,ampm) ); | 297 | endTimeChanged( parseTime(s,ampm) ); |
298 | } | 298 | } |
299 | 299 | ||
300 | void DateEntry::endTimeChanged( const QTime &t ) { | 300 | void DateEntry::endTimeChanged( const QTime &t ) { |
301 | if ( endDate > startDate || t >= startTime ) { | 301 | if ( endDate > startDate || t >= startTime ) { |
302 | endTime = t; | 302 | endTime = t; |
303 | } else { | 303 | } else { |
304 | endTime = startTime; | 304 | endTime = startTime; |
305 | //comboEnd->setCurrentItem( comboStart->currentItem() ); | 305 | //comboEnd->setCurrentItem( comboStart->currentItem() ); |
306 | } | 306 | } |
307 | timePickerStart->setHour(endTime.hour()); | 307 | timePickerStart->setHour(endTime.hour()); |
308 | timePickerStart->setMinute(endTime.minute()); | 308 | timePickerStart->setMinute(endTime.minute()); |
309 | } | 309 | } |
310 | 310 | ||
311 | /* | 311 | /* |
diff --git a/core/pim/datebook/repeatentry.cpp b/core/pim/datebook/repeatentry.cpp index 7cf36da..04c3cf3 100644 --- a/core/pim/datebook/repeatentry.cpp +++ b/core/pim/datebook/repeatentry.cpp | |||
@@ -266,194 +266,194 @@ void RepeatEntry::setupDaily() | |||
266 | void RepeatEntry::setupWeekly() | 266 | void RepeatEntry::setupWeekly() |
267 | { | 267 | { |
268 | // reshow the buttons... | 268 | // reshow the buttons... |
269 | fraExtra->setTitle( RepeatEntryBase::tr("Repeat On") ); | 269 | fraExtra->setTitle( RepeatEntryBase::tr("Repeat On") ); |
270 | fraExtra->setExclusive( FALSE ); | 270 | fraExtra->setExclusive( FALSE ); |
271 | fraExtra->show(); | 271 | fraExtra->show(); |
272 | if ( startWeekOnMonday ) { | 272 | if ( startWeekOnMonday ) { |
273 | cmdExtra1->setText( RepeatEntryBase::tr("Mon") ); | 273 | cmdExtra1->setText( RepeatEntryBase::tr("Mon") ); |
274 | cmdExtra2->setText( RepeatEntryBase::tr("Tue") ); | 274 | cmdExtra2->setText( RepeatEntryBase::tr("Tue") ); |
275 | cmdExtra3->setText( RepeatEntryBase::tr("Wed") ); | 275 | cmdExtra3->setText( RepeatEntryBase::tr("Wed") ); |
276 | cmdExtra4->setText( RepeatEntryBase::tr("Thu") ); | 276 | cmdExtra4->setText( RepeatEntryBase::tr("Thu") ); |
277 | cmdExtra5->setText( RepeatEntryBase::tr("Fri") ); | 277 | cmdExtra5->setText( RepeatEntryBase::tr("Fri") ); |
278 | cmdExtra6->setText( RepeatEntryBase::tr("Sat") ); | 278 | cmdExtra6->setText( RepeatEntryBase::tr("Sat") ); |
279 | cmdExtra7->setText( RepeatEntryBase::tr("Sun") ); | 279 | cmdExtra7->setText( RepeatEntryBase::tr("Sun") ); |
280 | } else { | 280 | } else { |
281 | cmdExtra1->setText( RepeatEntryBase::tr("Sun") ); | 281 | cmdExtra1->setText( RepeatEntryBase::tr("Sun") ); |
282 | cmdExtra2->setText( RepeatEntryBase::tr("Mon") ); | 282 | cmdExtra2->setText( RepeatEntryBase::tr("Mon") ); |
283 | cmdExtra3->setText( RepeatEntryBase::tr("Tue") ); | 283 | cmdExtra3->setText( RepeatEntryBase::tr("Tue") ); |
284 | cmdExtra4->setText( RepeatEntryBase::tr("Wed") ); | 284 | cmdExtra4->setText( RepeatEntryBase::tr("Wed") ); |
285 | cmdExtra5->setText( RepeatEntryBase::tr("Thu") ); | 285 | cmdExtra5->setText( RepeatEntryBase::tr("Thu") ); |
286 | cmdExtra6->setText( RepeatEntryBase::tr("Fri") ); | 286 | cmdExtra6->setText( RepeatEntryBase::tr("Fri") ); |
287 | cmdExtra7->setText( RepeatEntryBase::tr("Sat") ); | 287 | cmdExtra7->setText( RepeatEntryBase::tr("Sat") ); |
288 | } | 288 | } |
289 | // I hope clustering these improve performance.... | 289 | // I hope clustering these improve performance.... |
290 | cmdExtra1->setOn( FALSE ); | 290 | cmdExtra1->setOn( FALSE ); |
291 | cmdExtra2->setOn( FALSE ); | 291 | cmdExtra2->setOn( FALSE ); |
292 | cmdExtra3->setOn( FALSE ); | 292 | cmdExtra3->setOn( FALSE ); |
293 | cmdExtra4->setOn( FALSE ); | 293 | cmdExtra4->setOn( FALSE ); |
294 | cmdExtra5->setOn( FALSE ); | 294 | cmdExtra5->setOn( FALSE ); |
295 | cmdExtra6->setOn( FALSE ); | 295 | cmdExtra6->setOn( FALSE ); |
296 | cmdExtra7->setOn( FALSE ); | 296 | cmdExtra7->setOn( FALSE ); |
297 | 297 | ||
298 | cmdExtra1->show(); | 298 | cmdExtra1->show(); |
299 | cmdExtra2->show(); | 299 | cmdExtra2->show(); |
300 | cmdExtra3->show(); | 300 | cmdExtra3->show(); |
301 | cmdExtra4->show(); | 301 | cmdExtra4->show(); |
302 | cmdExtra5->show(); | 302 | cmdExtra5->show(); |
303 | cmdExtra6->show(); | 303 | cmdExtra6->show(); |
304 | cmdExtra7->show(); | 304 | cmdExtra7->show(); |
305 | 305 | ||
306 | lblWeekVar->show(); | 306 | lblWeekVar->show(); |
307 | spinFreq->setValue( 1 ); | 307 | spinFreq->setValue( 1 ); |
308 | // might as well set the day too... | 308 | // might as well set the day too... |
309 | if ( startWeekOnMonday ) { | 309 | if ( startWeekOnMonday ) { |
310 | fraExtra->setButton( start.dayOfWeek() - 1 ); | 310 | fraExtra->setButton( start.dayOfWeek() - 1 ); |
311 | } else { | 311 | } else { |
312 | fraExtra->setButton( start.dayOfWeek() % 7 ); | 312 | fraExtra->setButton( start.dayOfWeek() % 7 ); |
313 | } | 313 | } |
314 | lblFreq->setText( tr("week(s)") ); | 314 | lblFreq->setText( tr("week(s)") ); |
315 | lblVar2->show(); | 315 | lblVar2->show(); |
316 | showRepeatStuff(); | 316 | showRepeatStuff(); |
317 | setupRepeatLabel( 1 ); | 317 | setupRepeatLabel( 1 ); |
318 | } | 318 | } |
319 | 319 | ||
320 | void RepeatEntry::setupMonthly() | 320 | void RepeatEntry::setupMonthly() |
321 | { | 321 | { |
322 | hideExtras(); | 322 | hideExtras(); |
323 | lblWeekVar->hide(); | 323 | lblWeekVar->hide(); |
324 | fraExtra->setTitle( tr("Repeat By") ); | 324 | fraExtra->setTitle( tr("Repeat By") ); |
325 | fraExtra->setExclusive( TRUE ); | 325 | fraExtra->setExclusive( TRUE ); |
326 | fraExtra->show(); | 326 | fraExtra->show(); |
327 | cmdExtra1->setText( tr("Day") ); | 327 | cmdExtra1->setText( tr("Day") ); |
328 | cmdExtra1->show(); | 328 | cmdExtra1->show(); |
329 | cmdExtra2->setText( tr("Date") ); | 329 | cmdExtra2->setText( tr("Date") ); |
330 | cmdExtra2->show(); | 330 | cmdExtra2->show(); |
331 | spinFreq->setValue( 1 ); | 331 | spinFreq->setValue( 1 ); |
332 | lblFreq->setText( tr("month(s)") ); | 332 | lblFreq->setText( tr("month(s)") ); |
333 | lblVar2->show(); | 333 | lblVar2->show(); |
334 | showRepeatStuff(); | 334 | showRepeatStuff(); |
335 | setupRepeatLabel( 1 ); | 335 | setupRepeatLabel( 1 ); |
336 | } | 336 | } |
337 | 337 | ||
338 | void RepeatEntry::setupYearly() | 338 | void RepeatEntry::setupYearly() |
339 | { | 339 | { |
340 | hideExtras(); | 340 | hideExtras(); |
341 | lblWeekVar->hide(); | 341 | lblWeekVar->hide(); |
342 | spinFreq->setValue( 1 ); | 342 | spinFreq->setValue( 1 ); |
343 | lblFreq->setText( tr("year(s)") ); | 343 | lblFreq->setText( tr("year(s)") ); |
344 | lblFreq->show(); | 344 | lblFreq->show(); |
345 | lblFreq->show(); | 345 | lblFreq->show(); |
346 | showRepeatStuff(); | 346 | showRepeatStuff(); |
347 | lblVar2->show(); | 347 | lblVar2->show(); |
348 | QString strEvery = strYearTemplate.arg( start.monthName(start.month()) ).arg( numberPlacing(start.day()) ); | 348 | QString strEvery = strYearTemplate.arg( start.monthName(start.month()) ).arg( numberPlacing(start.day()) ); |
349 | lblRepeat->setText( strEvery ); | 349 | lblRepeat->setText( strEvery ); |
350 | setupRepeatLabel( 1 ); | 350 | setupRepeatLabel( 1 ); |
351 | 351 | ||
352 | } | 352 | } |
353 | 353 | ||
354 | void RepeatEntry::init() | 354 | void RepeatEntry::init() |
355 | { | 355 | { |
356 | QPopupMenu *m1 = new QPopupMenu( this ); | 356 | QPopupMenu *m1 = new QPopupMenu( this ); |
357 | repeatPicker = new DateBookMonth( m1, 0, TRUE ); | 357 | repeatPicker = new DateBookMonth( m1, 0, TRUE ); |
358 | m1->insertItem( repeatPicker ); | 358 | m1->insertItem( repeatPicker ); |
359 | cmdEnd->setPopup( m1 ); | 359 | cmdEnd->setPopup( m1 ); |
360 | cmdEnd->setPopupDelay( 0 ); | 360 | cmdEnd->setPopupDelay( 0 ); |
361 | 361 | ||
362 | QObject::connect( repeatPicker, SIGNAL(dateClicked(int, int, int)), | 362 | QObject::connect( repeatPicker, SIGNAL(dateClicked(int,int,int)), |
363 | this, SLOT(endDateChanged(int, int, int)) ); | 363 | this, SLOT(endDateChanged(int,int,int)) ); |
364 | QObject::connect( qApp, SIGNAL(weekChanged(bool)), | 364 | QObject::connect( qApp, SIGNAL(weekChanged(bool)), |
365 | this, SLOT(slotChangeStartOfWeek(bool)) ); | 365 | this, SLOT(slotChangeStartOfWeek(bool)) ); |
366 | 366 | ||
367 | listRTypeButtons.setAutoDelete( TRUE ); | 367 | listRTypeButtons.setAutoDelete( TRUE ); |
368 | listRTypeButtons.append( cmdNone ); | 368 | listRTypeButtons.append( cmdNone ); |
369 | listRTypeButtons.append( cmdDay ); | 369 | listRTypeButtons.append( cmdDay ); |
370 | listRTypeButtons.append( cmdWeek ); | 370 | listRTypeButtons.append( cmdWeek ); |
371 | listRTypeButtons.append( cmdMonth ); | 371 | listRTypeButtons.append( cmdMonth ); |
372 | listRTypeButtons.append( cmdYear ); | 372 | listRTypeButtons.append( cmdYear ); |
373 | 373 | ||
374 | listExtra.setAutoDelete( TRUE ); | 374 | listExtra.setAutoDelete( TRUE ); |
375 | listExtra.append( cmdExtra1 ); | 375 | listExtra.append( cmdExtra1 ); |
376 | listExtra.append( cmdExtra2 ); | 376 | listExtra.append( cmdExtra2 ); |
377 | listExtra.append( cmdExtra3 ); | 377 | listExtra.append( cmdExtra3 ); |
378 | listExtra.append( cmdExtra4 ); | 378 | listExtra.append( cmdExtra4 ); |
379 | listExtra.append( cmdExtra5 ); | 379 | listExtra.append( cmdExtra5 ); |
380 | listExtra.append( cmdExtra6 ); | 380 | listExtra.append( cmdExtra6 ); |
381 | listExtra.append( cmdExtra7 ); | 381 | listExtra.append( cmdExtra7 ); |
382 | } | 382 | } |
383 | 383 | ||
384 | void RepeatEntry::slotNoEnd( bool unused ) | 384 | void RepeatEntry::slotNoEnd( bool unused ) |
385 | { | 385 | { |
386 | // if the item was toggled, then go ahead and set it to the maximum date | 386 | // if the item was toggled, then go ahead and set it to the maximum date |
387 | if ( unused ) { | 387 | if ( unused ) { |
388 | end.setYMD( 3000, 12, 31 ); | 388 | end.setYMD( 3000, 12, 31 ); |
389 | cmdEnd->setText( RepeatEntryBase::tr("No End Date") ); | 389 | cmdEnd->setText( RepeatEntryBase::tr("No End Date") ); |
390 | } else { | 390 | } else { |
391 | end = start; | 391 | end = start; |
392 | cmdEnd->setText( TimeString::shortDate(end) ); | 392 | cmdEnd->setText( TimeString::shortDate(end) ); |
393 | } | 393 | } |
394 | } | 394 | } |
395 | 395 | ||
396 | void RepeatEntry::endDateChanged( int y, int m, int d ) | 396 | void RepeatEntry::endDateChanged( int y, int m, int d ) |
397 | { | 397 | { |
398 | end.setYMD( y, m, d ); | 398 | end.setYMD( y, m, d ); |
399 | if ( end < start ) | 399 | if ( end < start ) |
400 | end = start; | 400 | end = start; |
401 | cmdEnd->setText( TimeString::shortDate( end ) ); | 401 | cmdEnd->setText( TimeString::shortDate( end ) ); |
402 | repeatPicker->setDate( end.year(), end.month(), end.day() ); | 402 | repeatPicker->setDate( end.year(), end.month(), end.day() ); |
403 | } | 403 | } |
404 | 404 | ||
405 | void RepeatEntry::setupRepeatLabel( const QString &s ) | 405 | void RepeatEntry::setupRepeatLabel( const QString &s ) |
406 | { | 406 | { |
407 | lblVar1->setText( s ); | 407 | lblVar1->setText( s ); |
408 | } | 408 | } |
409 | 409 | ||
410 | void RepeatEntry::setupRepeatLabel( int x ) | 410 | void RepeatEntry::setupRepeatLabel( int x ) |
411 | { | 411 | { |
412 | // change the spelling based on the value of x | 412 | // change the spelling based on the value of x |
413 | QString strVar2; | 413 | QString strVar2; |
414 | 414 | ||
415 | if ( x > 1 ) | 415 | if ( x > 1 ) |
416 | lblVar1->show(); | 416 | lblVar1->show(); |
417 | else | 417 | else |
418 | lblVar1->hide(); | 418 | lblVar1->hide(); |
419 | 419 | ||
420 | switch ( currInterval ) { | 420 | switch ( currInterval ) { |
421 | case NONE: | 421 | case NONE: |
422 | break; | 422 | break; |
423 | case DAY: | 423 | case DAY: |
424 | if ( x > 1 ) | 424 | if ( x > 1 ) |
425 | strVar2 = tr( "days" ); | 425 | strVar2 = tr( "days" ); |
426 | else | 426 | else |
427 | strVar2 = tr( "day" ); | 427 | strVar2 = tr( "day" ); |
428 | break; | 428 | break; |
429 | case WEEK: | 429 | case WEEK: |
430 | if ( x > 1 ) | 430 | if ( x > 1 ) |
431 | strVar2 = tr( "weeks" ); | 431 | strVar2 = tr( "weeks" ); |
432 | else | 432 | else |
433 | strVar2 = tr( "week" ); | 433 | strVar2 = tr( "week" ); |
434 | break; | 434 | break; |
435 | case MONTH: | 435 | case MONTH: |
436 | if ( x > 1 ) | 436 | if ( x > 1 ) |
437 | strVar2 = RepeatEntryBase::tr( "months" ); | 437 | strVar2 = RepeatEntryBase::tr( "months" ); |
438 | else | 438 | else |
439 | strVar2 = tr( "month" ); | 439 | strVar2 = tr( "month" ); |
440 | break; | 440 | break; |
441 | case YEAR: | 441 | case YEAR: |
442 | if ( x > 1 ) | 442 | if ( x > 1 ) |
443 | strVar2 = RepeatEntryBase::tr( "years" ); | 443 | strVar2 = RepeatEntryBase::tr( "years" ); |
444 | else | 444 | else |
445 | strVar2 = tr( "year" ); | 445 | strVar2 = tr( "year" ); |
446 | break; | 446 | break; |
447 | } | 447 | } |
448 | if ( !strVar2.isNull() ) | 448 | if ( !strVar2.isNull() ) |
449 | lblVar2->setText( strVar2 ); | 449 | lblVar2->setText( strVar2 ); |
450 | } | 450 | } |
451 | 451 | ||
452 | void RepeatEntry::showRepeatStuff() | 452 | void RepeatEntry::showRepeatStuff() |
453 | { | 453 | { |
454 | cmdEnd->show(); | 454 | cmdEnd->show(); |
455 | chkNoEnd->show(); | 455 | chkNoEnd->show(); |
456 | lblFreq->show(); | 456 | lblFreq->show(); |
457 | lblEvery->show(); | 457 | lblEvery->show(); |
458 | lblFreq->show(); | 458 | lblFreq->show(); |
459 | spinFreq->show(); | 459 | spinFreq->show(); |
diff --git a/core/pim/datebook2/mainwindow.cpp b/core/pim/datebook2/mainwindow.cpp index 7ff2204..3937796 100644 --- a/core/pim/datebook2/mainwindow.cpp +++ b/core/pim/datebook2/mainwindow.cpp | |||
@@ -1,250 +1,250 @@ | |||
1 | 1 | ||
2 | #include <qcopchannel_qws.h> | 2 | #include <qcopchannel_qws.h> |
3 | #include <qwidgetstack.h> | 3 | #include <qwidgetstack.h> |
4 | #include <qlabel.h> | 4 | #include <qlabel.h> |
5 | #include <qaction.h> | 5 | #include <qaction.h> |
6 | #include <qpopupmenu.h> | 6 | #include <qpopupmenu.h> |
7 | #include <qtimer.h> | 7 | #include <qtimer.h> |
8 | 8 | ||
9 | #include <qpe/qpeapplication.h> | 9 | #include <qpe/qpeapplication.h> |
10 | #include <qpe/ir.h> | 10 | #include <qpe/ir.h> |
11 | #include <qmenubar.h> | 11 | #include <qmenubar.h> |
12 | #include <qtoolbar.h> | 12 | #include <qtoolbar.h> |
13 | #include <qpe/qpemessagebox.h> | 13 | #include <qpe/qpemessagebox.h> |
14 | #include <qpe/resource.h> | 14 | #include <qpe/resource.h> |
15 | 15 | ||
16 | #include "editor.h" | 16 | #include "editor.h" |
17 | #include "show.h" | 17 | #include "show.h" |
18 | #include "templatemanager.h" | 18 | #include "templatemanager.h" |
19 | #include "bookmanager.h" | 19 | #include "bookmanager.h" |
20 | #include "mainwindow.h" | 20 | #include "mainwindow.h" |
21 | 21 | ||
22 | 22 | ||
23 | using namespace Datebook; | 23 | using namespace Datebook; |
24 | 24 | ||
25 | MainWindow::MainWindow() | 25 | MainWindow::MainWindow() |
26 | : OPimMainWindow( "Datebook", 0, 0 ), m_descMan( "Descriptions" ), m_locMan( "Locations" ) | 26 | : OPimMainWindow( "Datebook", 0, 0 ), m_descMan( "Descriptions" ), m_locMan( "Locations" ) |
27 | { | 27 | { |
28 | setIcon( Resource::loadPixmap( "datebook_icon" ) ); | 28 | setIcon( Resource::loadPixmap( "datebook_icon" ) ); |
29 | initUI(); | 29 | initUI(); |
30 | initManagers(); | 30 | initManagers(); |
31 | initView(); | 31 | initView(); |
32 | initConfig(); | 32 | initConfig(); |
33 | 33 | ||
34 | QTimer::singleShot(0, this, SLOT(populate() ) ); | 34 | QTimer::singleShot(0, this, SLOT(populate() ) ); |
35 | 35 | ||
36 | QCopChannel* chan = new QCopChannel( "QPE/System", this ); | 36 | QCopChannel* chan = new QCopChannel( "QPE/System", this ); |
37 | connect( chan, SIGNAL( received(const QCString&, const QByteArray& ) ), | 37 | connect( chan, SIGNAL( received(const QCString&,const QByteArray&) ), |
38 | this, SLOT( slotReceive( const QCString&, const QByteArray& ) ) ); | 38 | this, SLOT( slotReceive(const QCString&,const QByteArray&) ) ); |
39 | 39 | ||
40 | chan = new QCopChannel( "QPE/Datebook", this ); | 40 | chan = new QCopChannel( "QPE/Datebook", this ); |
41 | connect( chan, SIGNAL( received(const QCString&, const QByteArray& ) ), | 41 | connect( chan, SIGNAL( received(const QCString&,const QByteArray&) ), |
42 | this, SLOT( slotReceive( const QCString&, const QByteArray& ) ) ); | 42 | this, SLOT( slotReceive(const QCString&,const QByteArray&) ) ); |
43 | } | 43 | } |
44 | MainWindow::~MainWindow() { | 44 | MainWindow::~MainWindow() { |
45 | m_tempMan.save(); | 45 | m_tempMan.save(); |
46 | m_locMan.save(); | 46 | m_locMan.save(); |
47 | m_descMan.save(); | 47 | m_descMan.save(); |
48 | 48 | ||
49 | manager()->save(); | 49 | manager()->save(); |
50 | delete m_manager; | 50 | delete m_manager; |
51 | } | 51 | } |
52 | void MainWindow::doSetDocument( const QString& str ) { | 52 | void MainWindow::doSetDocument( const QString& str ) { |
53 | 53 | ||
54 | } | 54 | } |
55 | void MainWindow::flush() { | 55 | void MainWindow::flush() { |
56 | manager()->save(); | 56 | manager()->save(); |
57 | } | 57 | } |
58 | void MainWindow::reload() { | 58 | void MainWindow::reload() { |
59 | manager()->reload(); | 59 | manager()->reload(); |
60 | } | 60 | } |
61 | int MainWindow::create() { | 61 | int MainWindow::create() { |
62 | return 0; | 62 | return 0; |
63 | } | 63 | } |
64 | bool MainWindow::remove( int uid ) { | 64 | bool MainWindow::remove( int uid ) { |
65 | manager()->remove( uid ); | 65 | manager()->remove( uid ); |
66 | return true; | 66 | return true; |
67 | } | 67 | } |
68 | void MainWindow::beam( int uid ) { | 68 | void MainWindow::beam( int uid ) { |
69 | 69 | ||
70 | } | 70 | } |
71 | void MainWindow::show( int uid ) { | 71 | void MainWindow::show( int uid ) { |
72 | 72 | ||
73 | eventShow()->show( manager()->event( uid ) ); | 73 | eventShow()->show( manager()->event( uid ) ); |
74 | } | 74 | } |
75 | void MainWindow::add( const OPimRecord& ad) { | 75 | void MainWindow::add( const OPimRecord& ad) { |
76 | manager()->add( ad ); | 76 | manager()->add( ad ); |
77 | } | 77 | } |
78 | void MainWindow::edit() { | 78 | void MainWindow::edit() { |
79 | edit ( currentView()->currentItem() ); | 79 | edit ( currentView()->currentItem() ); |
80 | } | 80 | } |
81 | void MainWindow::edit( int uid ) { | 81 | void MainWindow::edit( int uid ) { |
82 | 82 | ||
83 | } | 83 | } |
84 | /* | 84 | /* |
85 | * init tool bars layout and so on | 85 | * init tool bars layout and so on |
86 | */ | 86 | */ |
87 | void MainWindow::initUI() { | 87 | void MainWindow::initUI() { |
88 | setToolBarsMovable( false ); | 88 | setToolBarsMovable( false ); |
89 | 89 | ||
90 | m_stack = new QWidgetStack( this ); | 90 | m_stack = new QWidgetStack( this ); |
91 | setCentralWidget( m_stack ); | 91 | setCentralWidget( m_stack ); |
92 | 92 | ||
93 | m_toolBar = new QToolBar( this ); | 93 | m_toolBar = new QToolBar( this ); |
94 | m_toolBar->setHorizontalStretchable( TRUE ); | 94 | m_toolBar->setHorizontalStretchable( TRUE ); |
95 | 95 | ||
96 | QMenuBar* mb = new QMenuBar( m_toolBar ); | 96 | QMenuBar* mb = new QMenuBar( m_toolBar ); |
97 | 97 | ||
98 | m_popView = new QPopupMenu( this ); | 98 | m_popView = new QPopupMenu( this ); |
99 | m_popSetting = new QPopupMenu( this ); | 99 | m_popSetting = new QPopupMenu( this ); |
100 | 100 | ||
101 | mb->insertItem( tr("View"), m_popView ); | 101 | mb->insertItem( tr("View"), m_popView ); |
102 | mb->insertItem( tr("Settings" ), m_popSetting ); | 102 | mb->insertItem( tr("Settings" ), m_popSetting ); |
103 | 103 | ||
104 | m_popTemplate = new QPopupMenu( this ); | 104 | m_popTemplate = new QPopupMenu( this ); |
105 | m_popTemplate->setCheckable( TRUE ); | 105 | m_popTemplate->setCheckable( TRUE ); |
106 | connect( m_popTemplate, SIGNAL(activated(int) ), | 106 | connect( m_popTemplate, SIGNAL(activated(int) ), |
107 | this, SLOT(slotNewFromTemplate(int) ) ); | 107 | this, SLOT(slotNewFromTemplate(int) ) ); |
108 | m_popView->insertItem(tr("New from template"), m_popTemplate, -1, 0); | 108 | m_popView->insertItem(tr("New from template"), m_popTemplate, -1, 0); |
109 | 109 | ||
110 | 110 | ||
111 | QAction* a = new QAction( tr("New Event"), Resource::loadPixmap("new"), | 111 | QAction* a = new QAction( tr("New Event"), Resource::loadPixmap("new"), |
112 | QString::null, 0, this, 0 ); | 112 | QString::null, 0, this, 0 ); |
113 | a->addTo( m_toolBar ); | 113 | a->addTo( m_toolBar ); |
114 | a->addTo( m_popView ); | 114 | a->addTo( m_popView ); |
115 | connect(a, SIGNAL( activated() ), this, SLOT( create() ) ); | 115 | connect(a, SIGNAL( activated() ), this, SLOT( create() ) ); |
116 | 116 | ||
117 | a = new QAction( tr("Edit Event"), Resource::loadPixmap("edit"), | 117 | a = new QAction( tr("Edit Event"), Resource::loadPixmap("edit"), |
118 | QString::null, 0, this, 0 ); | 118 | QString::null, 0, this, 0 ); |
119 | a->addTo( m_popView ); | 119 | a->addTo( m_popView ); |
120 | connect(a, SIGNAL( activated() ), this, SLOT( edit() ) ); | 120 | connect(a, SIGNAL( activated() ), this, SLOT( edit() ) ); |
121 | 121 | ||
122 | a = new QAction( tr("Today" ), Resource::loadPixmap( "datebook/to_day"), | 122 | a = new QAction( tr("Today" ), Resource::loadPixmap( "datebook/to_day"), |
123 | QString::null, 0, this, 0 ); | 123 | QString::null, 0, this, 0 ); |
124 | a->addTo( m_toolBar ); | 124 | a->addTo( m_toolBar ); |
125 | connect(a, SIGNAL( activated() ), this, SLOT( slotGoToNow() ) ); | 125 | connect(a, SIGNAL( activated() ), this, SLOT( slotGoToNow() ) ); |
126 | 126 | ||
127 | a = new QAction( tr("Find"), Resource::loadPixmap( "mag" ), | 127 | a = new QAction( tr("Find"), Resource::loadPixmap( "mag" ), |
128 | QString::null, 0, this, 0 ); | 128 | QString::null, 0, this, 0 ); |
129 | a->addTo( m_toolBar ); | 129 | a->addTo( m_toolBar ); |
130 | connect(a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); | 130 | connect(a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); |
131 | 131 | ||
132 | a = new QAction( tr("Configure"), QString::null, 0, 0 ); | 132 | a = new QAction( tr("Configure"), QString::null, 0, 0 ); |
133 | a->addTo( m_popSetting ); | 133 | a->addTo( m_popSetting ); |
134 | connect(a, SIGNAL( activated() ), this, SLOT( slotConfigure() ) ); | 134 | connect(a, SIGNAL( activated() ), this, SLOT( slotConfigure() ) ); |
135 | 135 | ||
136 | a = new QAction( tr("Configure Locations"), QString::null, 0, 0 ); | 136 | a = new QAction( tr("Configure Locations"), QString::null, 0, 0 ); |
137 | a->addTo( m_popSetting ); | 137 | a->addTo( m_popSetting ); |
138 | connect(a, SIGNAL( activated() ), this, SLOT( slotConfigureLocs() ) ); | 138 | connect(a, SIGNAL( activated() ), this, SLOT( slotConfigureLocs() ) ); |
139 | 139 | ||
140 | a = new QAction( tr("Configure Descriptions"), QString::null, 0, 0 ); | 140 | a = new QAction( tr("Configure Descriptions"), QString::null, 0, 0 ); |
141 | a->addTo( m_popSetting ); | 141 | a->addTo( m_popSetting ); |
142 | connect(a, SIGNAL( activated() ), this, SLOT(slotConfigureDesc() ) ); | 142 | connect(a, SIGNAL( activated() ), this, SLOT(slotConfigureDesc() ) ); |
143 | 143 | ||
144 | a = new QAction( tr("Configure Templates"), QString::null, 0, 0 ); | 144 | a = new QAction( tr("Configure Templates"), QString::null, 0, 0 ); |
145 | a->addTo( m_popSetting ); | 145 | a->addTo( m_popSetting ); |
146 | connect(a, SIGNAL( activated() ), this, SLOT(slotConfigureTemp() ) ); | 146 | connect(a, SIGNAL( activated() ), this, SLOT(slotConfigureTemp() ) ); |
147 | 147 | ||
148 | connect( qApp, SIGNAL(clockChanged(bool) ), | 148 | connect( qApp, SIGNAL(clockChanged(bool) ), |
149 | this, SLOT(slotClockChanged(bool) ) ); | 149 | this, SLOT(slotClockChanged(bool) ) ); |
150 | connect( qApp, SIGNAL(weekChanged(bool) ), | 150 | connect( qApp, SIGNAL(weekChanged(bool) ), |
151 | this, SLOT(slotWeekChanged(bool) ) ); | 151 | this, SLOT(slotWeekChanged(bool) ) ); |
152 | 152 | ||
153 | connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray& ) ), | 153 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&) ), |
154 | this, SLOT(slotAppMessage( const QCString&, const QByteArray& ) ) ); | 154 | this, SLOT(slotAppMessage(const QCString&,const QByteArray&) ) ); |
155 | } | 155 | } |
156 | void MainWindow::initConfig() { | 156 | void MainWindow::initConfig() { |
157 | 157 | ||
158 | } | 158 | } |
159 | void MainWindow::initView() { | 159 | void MainWindow::initView() { |
160 | 160 | ||
161 | } | 161 | } |
162 | void MainWindow::initManagers() { | 162 | void MainWindow::initManagers() { |
163 | m_manager = new BookManager; | 163 | m_manager = new BookManager; |
164 | 164 | ||
165 | m_tempMan.load(); | 165 | m_tempMan.load(); |
166 | m_locMan.load(); | 166 | m_locMan.load(); |
167 | m_descMan.load(); | 167 | m_descMan.load(); |
168 | 168 | ||
169 | setTemplateMenu(); | 169 | setTemplateMenu(); |
170 | } | 170 | } |
171 | void MainWindow::raiseCurrentView() { | 171 | void MainWindow::raiseCurrentView() { |
172 | 172 | ||
173 | } | 173 | } |
174 | /* | 174 | /* |
175 | * populate the view | 175 | * populate the view |
176 | */ | 176 | */ |
177 | void MainWindow::populate() { | 177 | void MainWindow::populate() { |
178 | if (!manager()->isLoaded() ) | 178 | if (!manager()->isLoaded() ) |
179 | manager()->load(); | 179 | manager()->load(); |
180 | } | 180 | } |
181 | void MainWindow::slotGoToNow() { | 181 | void MainWindow::slotGoToNow() { |
182 | 182 | ||
183 | } | 183 | } |
184 | View* MainWindow::currentView() { | 184 | View* MainWindow::currentView() { |
185 | 185 | ||
186 | } | 186 | } |
187 | void MainWindow::slotFind() { | 187 | void MainWindow::slotFind() { |
188 | 188 | ||
189 | } | 189 | } |
190 | void MainWindow::slotConfigure() { | 190 | void MainWindow::slotConfigure() { |
191 | 191 | ||
192 | } | 192 | } |
193 | void MainWindow::slotClockChanged( bool ) { | 193 | void MainWindow::slotClockChanged( bool ) { |
194 | 194 | ||
195 | } | 195 | } |
196 | void MainWindow::slotWeekChanged(bool ) { | 196 | void MainWindow::slotWeekChanged(bool ) { |
197 | 197 | ||
198 | } | 198 | } |
199 | void MainWindow::slotAppMessage( const QCString&, const QByteArray& ) { | 199 | void MainWindow::slotAppMessage( const QCString&, const QByteArray& ) { |
200 | 200 | ||
201 | } | 201 | } |
202 | void MainWindow::slotReceive( const QCString&, const QByteArray& ) { | 202 | void MainWindow::slotReceive( const QCString&, const QByteArray& ) { |
203 | 203 | ||
204 | } | 204 | } |
205 | BookManager* MainWindow::manager() { | 205 | BookManager* MainWindow::manager() { |
206 | return m_manager; | 206 | return m_manager; |
207 | } | 207 | } |
208 | TemplateManager MainWindow::templateManager() { | 208 | TemplateManager MainWindow::templateManager() { |
209 | return m_tempMan; | 209 | return m_tempMan; |
210 | } | 210 | } |
211 | LocationManager MainWindow::locationManager() { | 211 | LocationManager MainWindow::locationManager() { |
212 | return m_locMan; | 212 | return m_locMan; |
213 | } | 213 | } |
214 | DescriptionManager MainWindow::descriptionManager() { | 214 | DescriptionManager MainWindow::descriptionManager() { |
215 | return m_descMan; | 215 | return m_descMan; |
216 | } | 216 | } |
217 | void MainWindow::setLocationManager( const LocationManager& loc) { | 217 | void MainWindow::setLocationManager( const LocationManager& loc) { |
218 | m_locMan = loc; | 218 | m_locMan = loc; |
219 | } | 219 | } |
220 | void MainWindow::setDescriptionManager( const DescriptionManager& dsc ) { | 220 | void MainWindow::setDescriptionManager( const DescriptionManager& dsc ) { |
221 | m_descMan = dsc; | 221 | m_descMan = dsc; |
222 | } | 222 | } |
223 | Show* MainWindow::eventShow() { | 223 | Show* MainWindow::eventShow() { |
224 | return m_show; | 224 | return m_show; |
225 | } | 225 | } |
226 | void MainWindow::slotAction( QAction* act ) { | 226 | void MainWindow::slotAction( QAction* act ) { |
227 | 227 | ||
228 | } | 228 | } |
229 | void MainWindow::slotConfigureLocs() { | 229 | void MainWindow::slotConfigureLocs() { |
230 | LocationManagerDialog dlg( locationManager() ); | 230 | LocationManagerDialog dlg( locationManager() ); |
231 | dlg.setCaption( tr("Configure Locations") ); | 231 | dlg.setCaption( tr("Configure Locations") ); |
232 | if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) { | 232 | if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) { |
233 | setLocationManager( dlg.manager() ); | 233 | setLocationManager( dlg.manager() ); |
234 | } | 234 | } |
235 | } | 235 | } |
236 | void MainWindow::slotConfigureDesc() { | 236 | void MainWindow::slotConfigureDesc() { |
237 | DescriptionManagerDialog dlg( descriptionManager() ); | 237 | DescriptionManagerDialog dlg( descriptionManager() ); |
238 | dlg.setCaption( tr("Configure Descriptions") ); | 238 | dlg.setCaption( tr("Configure Descriptions") ); |
239 | if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) { | 239 | if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) { |
240 | setDescriptionManager( dlg.manager() ); | 240 | setDescriptionManager( dlg.manager() ); |
241 | } | 241 | } |
242 | } | 242 | } |
243 | void MainWindow::slotConfigureTemp() { | 243 | void MainWindow::slotConfigureTemp() { |
244 | TemplateDialog dlg( templateManager(), editor() ); | 244 | TemplateDialog dlg( templateManager(), editor() ); |
245 | dlg.setCaption( tr("Configure Templates") ); | 245 | dlg.setCaption( tr("Configure Templates") ); |
246 | if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) { | 246 | if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) { |
247 | m_tempMan = dlg.manager(); | 247 | m_tempMan = dlg.manager(); |
248 | setTemplateMenu(); | 248 | setTemplateMenu(); |
249 | } | 249 | } |
250 | } | 250 | } |
diff --git a/core/pim/osearch/mainwindow.cpp b/core/pim/osearch/mainwindow.cpp index bfe95b0..8b6a5df 100644 --- a/core/pim/osearch/mainwindow.cpp +++ b/core/pim/osearch/mainwindow.cpp | |||
@@ -108,193 +108,193 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f ) : | |||
108 | buttonBox->hide(); | 108 | buttonBox->hide(); |
109 | 109 | ||
110 | searches.append( new AppLnkSearch( resultsList, tr("Applications") ) ); | 110 | searches.append( new AppLnkSearch( resultsList, tr("Applications") ) ); |
111 | searches.append( new DocLnkSearch( resultsList, tr("Documents") ) ); | 111 | searches.append( new DocLnkSearch( resultsList, tr("Documents") ) ); |
112 | searches.append( new TodoSearch( resultsList, tr("Todo List") ) ); | 112 | searches.append( new TodoSearch( resultsList, tr("Todo List") ) ); |
113 | searches.append( new DatebookSearch( resultsList, tr("Calendar") ) ); | 113 | searches.append( new DatebookSearch( resultsList, tr("Calendar") ) ); |
114 | searches.append( new AdressSearch( resultsList, tr("Contacts") ) ); | 114 | searches.append( new AdressSearch( resultsList, tr("Contacts") ) ); |
115 | 115 | ||
116 | setCentralWidget( mainFrame ); | 116 | setCentralWidget( mainFrame ); |
117 | 117 | ||
118 | popupTimer = new QTimer(); | 118 | popupTimer = new QTimer(); |
119 | searchTimer = new QTimer(); | 119 | searchTimer = new QTimer(); |
120 | 120 | ||
121 | connect(popupTimer, SIGNAL(timeout()), SLOT(showPopup())); | 121 | connect(popupTimer, SIGNAL(timeout()), SLOT(showPopup())); |
122 | connect(searchTimer, SIGNAL(timeout()), SLOT(searchStringChanged())); | 122 | connect(searchTimer, SIGNAL(timeout()), SLOT(searchStringChanged())); |
123 | connect(resultsList, SIGNAL(pressed(QListViewItem*)), SLOT(setCurrent(QListViewItem*))); | 123 | connect(resultsList, SIGNAL(pressed(QListViewItem*)), SLOT(setCurrent(QListViewItem*))); |
124 | connect(resultsList, SIGNAL(clicked(QListViewItem*)), SLOT(stopTimer(QListViewItem*))); | 124 | connect(resultsList, SIGNAL(clicked(QListViewItem*)), SLOT(stopTimer(QListViewItem*))); |
125 | 125 | ||
126 | signalMapper = new QSignalMapper( this ); | 126 | signalMapper = new QSignalMapper( this ); |
127 | 127 | ||
128 | connect(signalMapper, SIGNAL(mapped(int)), SLOT( slotAction(int) ) ); | 128 | connect(signalMapper, SIGNAL(mapped(int)), SLOT( slotAction(int) ) ); |
129 | 129 | ||
130 | makeMenu(); | 130 | makeMenu(); |
131 | 131 | ||
132 | Config cfg( "osearch", Config::User ); | 132 | Config cfg( "osearch", Config::User ); |
133 | cfg.setGroup( "search_settings" ); | 133 | cfg.setGroup( "search_settings" ); |
134 | actionCaseSensitiv->setOn( cfg.readBoolEntry( "caseSensitiv", false ) ); | 134 | actionCaseSensitiv->setOn( cfg.readBoolEntry( "caseSensitiv", false ) ); |
135 | actionWildcards->setOn( cfg.readBoolEntry( "wildcards", false ) ); | 135 | actionWildcards->setOn( cfg.readBoolEntry( "wildcards", false ) ); |
136 | // actionWholeWordsOnly->setOn( cfg.readBoolEntry( "whole_words_only", false ) ); | 136 | // actionWholeWordsOnly->setOn( cfg.readBoolEntry( "whole_words_only", false ) ); |
137 | } | 137 | } |
138 | 138 | ||
139 | void MainWindow::makeMenu() | 139 | void MainWindow::makeMenu() |
140 | { | 140 | { |
141 | QToolBar *toolBar = new QToolBar( this ); | 141 | QToolBar *toolBar = new QToolBar( this ); |
142 | QToolBar *searchBar = new QToolBar(this); | 142 | QToolBar *searchBar = new QToolBar(this); |
143 | QMenuBar *menuBar = new QMenuBar( toolBar ); | 143 | QMenuBar *menuBar = new QMenuBar( toolBar ); |
144 | QPopupMenu *searchMenu = new QPopupMenu( menuBar ); | 144 | QPopupMenu *searchMenu = new QPopupMenu( menuBar ); |
145 | // QPopupMenu *viewMenu = new QPopupMenu( menuBar ); | 145 | // QPopupMenu *viewMenu = new QPopupMenu( menuBar ); |
146 | QPopupMenu *cfgMenu = new QPopupMenu( menuBar ); | 146 | QPopupMenu *cfgMenu = new QPopupMenu( menuBar ); |
147 | QPopupMenu *searchOptions = new QPopupMenu( cfgMenu ); | 147 | QPopupMenu *searchOptions = new QPopupMenu( cfgMenu ); |
148 | 148 | ||
149 | setToolBarsMovable( false ); | 149 | setToolBarsMovable( false ); |
150 | toolBar->setHorizontalStretchable( true ); | 150 | toolBar->setHorizontalStretchable( true ); |
151 | menuBar->insertItem( tr( "Search" ), searchMenu ); | 151 | menuBar->insertItem( tr( "Search" ), searchMenu ); |
152 | menuBar->insertItem( tr( "Settings" ), cfgMenu ); | 152 | menuBar->insertItem( tr( "Settings" ), cfgMenu ); |
153 | 153 | ||
154 | //SETTINGS MENU | 154 | //SETTINGS MENU |
155 | cfgMenu->insertItem( tr( "Search" ), searchOptions ); | 155 | cfgMenu->insertItem( tr( "Search" ), searchOptions ); |
156 | QPopupMenu *pop; | 156 | QPopupMenu *pop; |
157 | for (SearchGroup *s = searches.first(); s != 0; s = searches.next() ){ | 157 | for (SearchGroup *s = searches.first(); s != 0; s = searches.next() ){ |
158 | pop = s->popupMenu(); | 158 | pop = s->popupMenu(); |
159 | if (pop){ | 159 | if (pop){ |
160 | cfgMenu->insertItem( s->text(0), pop ); | 160 | cfgMenu->insertItem( s->text(0), pop ); |
161 | } | 161 | } |
162 | } | 162 | } |
163 | 163 | ||
164 | 164 | ||
165 | //SEARCH | 165 | //SEARCH |
166 | SearchAllAction = new QAction( tr("Search all"),QString::null, 0, this, 0 ); | 166 | SearchAllAction = new QAction( tr("Search all"),QString::null, 0, this, 0 ); |
167 | SearchAllAction->setIconSet( Resource::loadIconSet( "find" ) ); | 167 | SearchAllAction->setIconSet( Resource::loadIconSet( "find" ) ); |
168 | // QWhatsThis::add( SearchAllAction, tr("Search everything...") ); | 168 | // QWhatsThis::add( SearchAllAction, tr("Search everything...") ); |
169 | connect( SearchAllAction, SIGNAL(activated()), this, SLOT(searchAll()) ); | 169 | connect( SearchAllAction, SIGNAL(activated()), this, SLOT(searchAll()) ); |
170 | SearchAllAction->addTo( searchMenu ); | 170 | SearchAllAction->addTo( searchMenu ); |
171 | searchMenu->insertItem( tr( "Options" ), searchOptions ); | 171 | searchMenu->insertItem( tr( "Options" ), searchOptions ); |
172 | 172 | ||
173 | //SEARCH OPTIONS | 173 | //SEARCH OPTIONS |
174 | //actionWholeWordsOnly = new QAction( tr("Whole words only"),QString::null, 0, this, 0, true ); | 174 | //actionWholeWordsOnly = new QAction( tr("Whole words only"),QString::null, 0, this, 0, true ); |
175 | //actionWholeWordsOnly->addTo( searchOptions ); | 175 | //actionWholeWordsOnly->addTo( searchOptions ); |
176 | actionCaseSensitiv = new QAction( tr("Case sensitiv"),QString::null, 0, this, 0, true ); | 176 | actionCaseSensitiv = new QAction( tr("Case sensitiv"),QString::null, 0, this, 0, true ); |
177 | actionCaseSensitiv->addTo( searchOptions ); | 177 | actionCaseSensitiv->addTo( searchOptions ); |
178 | actionWildcards = new QAction( tr("Use wildcards"),QString::null, 0, this, 0, true ); | 178 | actionWildcards = new QAction( tr("Use wildcards"),QString::null, 0, this, 0, true ); |
179 | actionWildcards->addTo( searchOptions ); | 179 | actionWildcards->addTo( searchOptions ); |
180 | 180 | ||
181 | //SEARCH BAR | 181 | //SEARCH BAR |
182 | LabelEnterText = new QLabel( searchBar, "Label" ); | 182 | LabelEnterText = new QLabel( searchBar, "Label" ); |
183 | LabelEnterText->setAutoMask( FALSE ); | 183 | LabelEnterText->setAutoMask( FALSE ); |
184 | LabelEnterText->setText( tr( "Search for: " ) ); | 184 | LabelEnterText->setText( tr( "Search for: " ) ); |
185 | 185 | ||
186 | addToolBar( searchBar, "Search", QMainWindow::Top, TRUE ); | 186 | addToolBar( searchBar, "Search", QMainWindow::Top, TRUE ); |
187 | QLineEdit *searchEdit = new QLineEdit( searchBar, "seachEdit" ); | 187 | QLineEdit *searchEdit = new QLineEdit( searchBar, "seachEdit" ); |
188 | QWhatsThis::add( searchEdit, tr("Enter your search terms here") ); | 188 | QWhatsThis::add( searchEdit, tr("Enter your search terms here") ); |
189 | searchEdit->setFocus(); | 189 | searchEdit->setFocus(); |
190 | searchBar->setHorizontalStretchable( TRUE ); | 190 | searchBar->setHorizontalStretchable( TRUE ); |
191 | searchBar->setStretchableWidget( searchEdit ); | 191 | searchBar->setStretchableWidget( searchEdit ); |
192 | 192 | ||
193 | //Search button | 193 | //Search button |
194 | SearchAllAction->addTo( searchBar ); | 194 | SearchAllAction->addTo( searchBar ); |
195 | 195 | ||
196 | //image ripped of off opie-login/loginwindow.cpp | 196 | //image ripped of off opie-login/loginwindow.cpp |
197 | QPixmap image1( ( const char** ) image1_data ); | 197 | QPixmap image1( ( const char** ) image1_data ); |
198 | 198 | ||
199 | //Clear text | 199 | //Clear text |
200 | ClearSearchText = new QToolButton( searchBar, "ClearSearchText"); | 200 | ClearSearchText = new QToolButton( searchBar, "ClearSearchText"); |
201 | ClearSearchText->setText( tr( "" ) ); | 201 | ClearSearchText->setText( tr( "" ) ); |
202 | ClearSearchText->setPixmap( image1 ); | 202 | ClearSearchText->setPixmap( image1 ); |
203 | 203 | ||
204 | connect( searchEdit, SIGNAL( textChanged( const QString & ) ),this, SLOT( setSearch( const QString & ) ) ); | 204 | connect( searchEdit, SIGNAL( textChanged(const QString&) ),this, SLOT( setSearch(const QString&) ) ); |
205 | connect( ClearSearchText, SIGNAL( clicked() ), searchEdit, SLOT( clear() ) ); | 205 | connect( ClearSearchText, SIGNAL( clicked() ), searchEdit, SLOT( clear() ) ); |
206 | 206 | ||
207 | } | 207 | } |
208 | 208 | ||
209 | MainWindow::~MainWindow() | 209 | MainWindow::~MainWindow() |
210 | { | 210 | { |
211 | Config cfg( "osearch", Config::User ); | 211 | Config cfg( "osearch", Config::User ); |
212 | cfg.setGroup( "search_settings" ); | 212 | cfg.setGroup( "search_settings" ); |
213 | cfg.writeEntry( "caseSensitiv", actionCaseSensitiv->isOn() ); | 213 | cfg.writeEntry( "caseSensitiv", actionCaseSensitiv->isOn() ); |
214 | cfg.writeEntry( "wildcards", actionWildcards->isOn() ); | 214 | cfg.writeEntry( "wildcards", actionWildcards->isOn() ); |
215 | //cfg.writeEntry( "whole_words_only", actionWholeWordsOnly->isOn() ); | 215 | //cfg.writeEntry( "whole_words_only", actionWholeWordsOnly->isOn() ); |
216 | } | 216 | } |
217 | 217 | ||
218 | void MainWindow::setCurrent(QListViewItem *item) | 218 | void MainWindow::setCurrent(QListViewItem *item) |
219 | { | 219 | { |
220 | if (!item) return; | 220 | if (!item) return; |
221 | _currentItem = (OListViewItem*)item; | 221 | _currentItem = (OListViewItem*)item; |
222 | //_currentItem = dynamic_cast<OListViewItem*>(item); | 222 | //_currentItem = dynamic_cast<OListViewItem*>(item); |
223 | if (_currentItem->rtti() == OListViewItem::Result){ | 223 | if (_currentItem->rtti() == OListViewItem::Result){ |
224 | ResultItem *res = (ResultItem*)item; | 224 | ResultItem *res = (ResultItem*)item; |
225 | // ResultItem *res = dynamic_cast<ResultItem*>(item); | 225 | // ResultItem *res = dynamic_cast<ResultItem*>(item); |
226 | richEdit->setText( res->toRichText() ); | 226 | richEdit->setText( res->toRichText() ); |
227 | QIntDict<QString> acts = res->actions(); | 227 | QIntDict<QString> acts = res->actions(); |
228 | QButton *button; | 228 | QButton *button; |
229 | for (uint i = 0; i < acts.count(); i++){ | 229 | for (uint i = 0; i < acts.count(); i++){ |
230 | button = buttonMap[i]; | 230 | button = buttonMap[i]; |
231 | if (!button) { | 231 | if (!button) { |
232 | qWarning(" no button for %s", (*acts[i]).latin1() ); | 232 | qWarning(" no button for %s", (*acts[i]).latin1() ); |
233 | button = new QPushButton( buttonBox ); | 233 | button = new QPushButton( buttonBox ); |
234 | buttonMap.insert( i, button ); | 234 | buttonMap.insert( i, button ); |
235 | signalMapper->setMapping(button, i ); | 235 | signalMapper->setMapping(button, i ); |
236 | connect(button, SIGNAL(clicked() ), signalMapper, SLOT(map() ) ); | 236 | connect(button, SIGNAL(clicked() ), signalMapper, SLOT(map() ) ); |
237 | } | 237 | } |
238 | button->setText( *acts[i] ); | 238 | button->setText( *acts[i] ); |
239 | button->show(); | 239 | button->show(); |
240 | } | 240 | } |
241 | for (uint i = acts.count(); i < _buttonCount; i++){ | 241 | for (uint i = acts.count(); i < _buttonCount; i++){ |
242 | button = buttonMap[i]; | 242 | button = buttonMap[i]; |
243 | if (button) button->hide(); | 243 | if (button) button->hide(); |
244 | } | 244 | } |
245 | _buttonCount = acts.count(); | 245 | _buttonCount = acts.count(); |
246 | detailsFrame->show(); | 246 | detailsFrame->show(); |
247 | buttonBox->show(); | 247 | buttonBox->show(); |
248 | 248 | ||
249 | }else { | 249 | }else { |
250 | detailsFrame->hide(); | 250 | detailsFrame->hide(); |
251 | buttonBox->hide(); | 251 | buttonBox->hide(); |
252 | } | 252 | } |
253 | popupTimer->start( 300, true ); | 253 | popupTimer->start( 300, true ); |
254 | } | 254 | } |
255 | 255 | ||
256 | void MainWindow::stopTimer(QListViewItem*) | 256 | void MainWindow::stopTimer(QListViewItem*) |
257 | { | 257 | { |
258 | popupTimer->stop(); | 258 | popupTimer->stop(); |
259 | } | 259 | } |
260 | 260 | ||
261 | void MainWindow::showPopup() | 261 | void MainWindow::showPopup() |
262 | { | 262 | { |
263 | popupTimer->stop(); | 263 | popupTimer->stop(); |
264 | if (!_currentItem) return; | 264 | if (!_currentItem) return; |
265 | QPopupMenu *pop = _currentItem->popupMenu(); | 265 | QPopupMenu *pop = _currentItem->popupMenu(); |
266 | if (pop) pop->popup( QCursor::pos() ); | 266 | if (pop) pop->popup( QCursor::pos() ); |
267 | } | 267 | } |
268 | 268 | ||
269 | void MainWindow::setSearch( const QString &key ) | 269 | void MainWindow::setSearch( const QString &key ) |
270 | { | 270 | { |
271 | searchTimer->stop(); | 271 | searchTimer->stop(); |
272 | _searchString = key; | 272 | _searchString = key; |
273 | searchTimer->start( 300 ); | 273 | searchTimer->start( 300 ); |
274 | } | 274 | } |
275 | 275 | ||
276 | void MainWindow::searchStringChanged() | 276 | void MainWindow::searchStringChanged() |
277 | { | 277 | { |
278 | #ifdef NEW_OWAIT | 278 | #ifdef NEW_OWAIT |
279 | OWait("setting search string"); | 279 | OWait("setting search string"); |
280 | #endif | 280 | #endif |
281 | searchTimer->stop(); | 281 | searchTimer->stop(); |
282 | QString ss = _searchString; | 282 | QString ss = _searchString; |
283 | //ss = Global::stringQuote( _searchString ); | 283 | //ss = Global::stringQuote( _searchString ); |
284 | //if (actionWholeWordsOnly->isOn()) | 284 | //if (actionWholeWordsOnly->isOn()) |
285 | // ss = "\\s"+_searchString+"\\s"; | 285 | // ss = "\\s"+_searchString+"\\s"; |
286 | //qDebug(" set searchString >%s<",ss.latin1()); | 286 | //qDebug(" set searchString >%s<",ss.latin1()); |
287 | QRegExp re( ss ); | 287 | QRegExp re( ss ); |
288 | re.setCaseSensitive( actionCaseSensitiv->isOn() ); | 288 | re.setCaseSensitive( actionCaseSensitiv->isOn() ); |
289 | re.setWildcard( actionWildcards->isOn() ); | 289 | re.setWildcard( actionWildcards->isOn() ); |
290 | for (SearchGroup *s = searches.first(); s != 0; s = searches.next() ) | 290 | for (SearchGroup *s = searches.first(); s != 0; s = searches.next() ) |
291 | s->setSearch( re ); | 291 | s->setSearch( re ); |
292 | } | 292 | } |
293 | 293 | ||
294 | void MainWindow::searchAll() | 294 | void MainWindow::searchAll() |
295 | { | 295 | { |
296 | #ifdef NEW_OWAIT | 296 | #ifdef NEW_OWAIT |
297 | OWait("searching..."); | 297 | OWait("searching..."); |
298 | #endif | 298 | #endif |
299 | for (SearchGroup *s = searches.first(); s != 0; s = searches.next() ){ | 299 | for (SearchGroup *s = searches.first(); s != 0; s = searches.next() ){ |
300 | s->doSearch(); | 300 | s->doSearch(); |
diff --git a/core/pim/today/plugins/addressbook/addresspluginwidget.cpp b/core/pim/today/plugins/addressbook/addresspluginwidget.cpp index c8652f3..b0d456d 100644 --- a/core/pim/today/plugins/addressbook/addresspluginwidget.cpp +++ b/core/pim/today/plugins/addressbook/addresspluginwidget.cpp | |||
@@ -1,137 +1,137 @@ | |||
1 | /* | 1 | /* |
2 | * addresspluginwidget.cpp | 2 | * addresspluginwidget.cpp |
3 | * | 3 | * |
4 | * copyright : (c) 2003 by Stefan Eilers | 4 | * copyright : (c) 2003 by Stefan Eilers |
5 | * email : eilers.stefan@epost.de | 5 | * email : eilers.stefan@epost.de |
6 | * | 6 | * |
7 | * This implementation was derived from the todolist plugin implementation | 7 | * This implementation was derived from the todolist plugin implementation |
8 | * | 8 | * |
9 | */ | 9 | */ |
10 | /*************************************************************************** | 10 | /*************************************************************************** |
11 | * * | 11 | * * |
12 | * This program is free software; you can redistribute it and/or modify * | 12 | * This program is free software; you can redistribute it and/or modify * |
13 | * it under the terms of the GNU General Public License as published by * | 13 | * it under the terms of the GNU General Public License as published by * |
14 | * the Free Software Foundation; either version 2 of the License, or * | 14 | * the Free Software Foundation; either version 2 of the License, or * |
15 | * (at your option) any later version. * | 15 | * (at your option) any later version. * |
16 | * * | 16 | * * |
17 | ***************************************************************************/ | 17 | ***************************************************************************/ |
18 | 18 | ||
19 | #include "addresspluginwidget.h" | 19 | #include "addresspluginwidget.h" |
20 | 20 | ||
21 | 21 | ||
22 | #include <qpe/config.h> | 22 | #include <qpe/config.h> |
23 | 23 | ||
24 | #include <opie/ocontact.h> | 24 | #include <opie/ocontact.h> |
25 | 25 | ||
26 | AddressBookPluginWidget::AddressBookPluginWidget( QWidget *parent, const char* name ) | 26 | AddressBookPluginWidget::AddressBookPluginWidget( QWidget *parent, const char* name ) |
27 | : QWidget( parent, name ) { | 27 | : QWidget( parent, name ) { |
28 | 28 | ||
29 | addressLabel = 0l; | 29 | addressLabel = 0l; |
30 | m_contactdb = 0l; | 30 | m_contactdb = 0l; |
31 | layoutTodo = 0l; | 31 | layoutTodo = 0l; |
32 | 32 | ||
33 | // Hä ? Nonsense ! (se) | 33 | // Hä ? Nonsense ! (se) |
34 | if ( m_contactdb ) { | 34 | if ( m_contactdb ) { |
35 | delete m_contactdb; | 35 | delete m_contactdb; |
36 | } | 36 | } |
37 | 37 | ||
38 | m_contactdb = new OContactAccess("addressplugin"); | 38 | m_contactdb = new OContactAccess("addressplugin"); |
39 | 39 | ||
40 | connect( m_contactdb, SIGNAL( signalChanged( const OContactAccess * ) ), | 40 | connect( m_contactdb, SIGNAL( signalChanged(const OContactAccess*) ), |
41 | this, SLOT( refresh( const OContactAccess * ) ) ); | 41 | this, SLOT( refresh(const OContactAccess*) ) ); |
42 | 42 | ||
43 | 43 | ||
44 | readConfig(); | 44 | readConfig(); |
45 | getAddress(); | 45 | getAddress(); |
46 | } | 46 | } |
47 | 47 | ||
48 | AddressBookPluginWidget::~AddressBookPluginWidget() { | 48 | AddressBookPluginWidget::~AddressBookPluginWidget() { |
49 | delete m_contactdb; | 49 | delete m_contactdb; |
50 | } | 50 | } |
51 | 51 | ||
52 | void AddressBookPluginWidget::refresh( const OContactAccess* ) | 52 | void AddressBookPluginWidget::refresh( const OContactAccess* ) |
53 | { | 53 | { |
54 | qWarning(" AddressBookPluginWidget::Database was changed externally ! "); | 54 | qWarning(" AddressBookPluginWidget::Database was changed externally ! "); |
55 | m_contactdb->reload(); | 55 | m_contactdb->reload(); |
56 | getAddress(); | 56 | getAddress(); |
57 | } | 57 | } |
58 | 58 | ||
59 | void AddressBookPluginWidget::reinitialize() { | 59 | void AddressBookPluginWidget::reinitialize() { |
60 | readConfig(); | 60 | readConfig(); |
61 | getAddress(); | 61 | getAddress(); |
62 | } | 62 | } |
63 | 63 | ||
64 | void AddressBookPluginWidget::readConfig() { | 64 | void AddressBookPluginWidget::readConfig() { |
65 | Config cfg( "todayaddressplugin" ); | 65 | Config cfg( "todayaddressplugin" ); |
66 | cfg.setGroup( "config" ); | 66 | cfg.setGroup( "config" ); |
67 | m_maxLinesTask = cfg.readNumEntry( "maxlinestask", 5 ); | 67 | m_maxLinesTask = cfg.readNumEntry( "maxlinestask", 5 ); |
68 | m_maxCharClip = cfg.readNumEntry( "maxcharclip", 38 ); | 68 | m_maxCharClip = cfg.readNumEntry( "maxcharclip", 38 ); |
69 | m_daysLookAhead = cfg.readNumEntry( "dayslookahead", 14 ); | 69 | m_daysLookAhead = cfg.readNumEntry( "dayslookahead", 14 ); |
70 | m_urgentDays = cfg.readNumEntry( "urgentdays", 7 ); | 70 | m_urgentDays = cfg.readNumEntry( "urgentdays", 7 ); |
71 | m_entryColor = cfg.readEntry("entrycolor", Qt::black.name() ); | 71 | m_entryColor = cfg.readEntry("entrycolor", Qt::black.name() ); |
72 | m_headlineColor = cfg.readEntry( "headlinecolor", Qt::black.name() ); | 72 | m_headlineColor = cfg.readEntry( "headlinecolor", Qt::black.name() ); |
73 | m_urgentColor = cfg.readEntry( "urgentcolor", Qt::red.name() ); | 73 | m_urgentColor = cfg.readEntry( "urgentcolor", Qt::red.name() ); |
74 | m_showBirthdays = cfg.readBoolEntry( "showBirthdays", true ); | 74 | m_showBirthdays = cfg.readBoolEntry( "showBirthdays", true ); |
75 | m_showAnniversaries = cfg.readBoolEntry( "showAnniversaries", true ); | 75 | m_showAnniversaries = cfg.readBoolEntry( "showAnniversaries", true ); |
76 | } | 76 | } |
77 | 77 | ||
78 | 78 | ||
79 | /** | 79 | /** |
80 | * Get the addresss | 80 | * Get the addresss |
81 | */ | 81 | */ |
82 | void AddressBookPluginWidget::getAddress() { | 82 | void AddressBookPluginWidget::getAddress() { |
83 | 83 | ||
84 | if ( ! layoutTodo ){ | 84 | if ( ! layoutTodo ){ |
85 | layoutTodo = new QVBoxLayout( this ); | 85 | layoutTodo = new QVBoxLayout( this ); |
86 | } | 86 | } |
87 | 87 | ||
88 | if ( ! addressLabel ) { | 88 | if ( ! addressLabel ) { |
89 | addressLabel = new OClickableLabel( this ); | 89 | addressLabel = new OClickableLabel( this ); |
90 | connect( addressLabel, SIGNAL( clicked() ), this, SLOT( startAddressBook() ) ); | 90 | connect( addressLabel, SIGNAL( clicked() ), this, SLOT( startAddressBook() ) ); |
91 | layoutTodo->addWidget( addressLabel ); | 91 | layoutTodo->addWidget( addressLabel ); |
92 | } | 92 | } |
93 | 93 | ||
94 | QString output; | 94 | QString output; |
95 | 95 | ||
96 | // Check whether the database provide the search option.. | 96 | // Check whether the database provide the search option.. |
97 | if ( !m_contactdb->hasQuerySettings( OContactAccess::DateDiff ) ){ | 97 | if ( !m_contactdb->hasQuerySettings( OContactAccess::DateDiff ) ){ |
98 | // Libopie seems to be old.. | 98 | // Libopie seems to be old.. |
99 | output = QObject::tr( "Database does not provide this search query ! Please upgrade libOpie !<br>" ); | 99 | output = QObject::tr( "Database does not provide this search query ! Please upgrade libOpie !<br>" ); |
100 | addressLabel->setText( output ); | 100 | addressLabel->setText( output ); |
101 | return; | 101 | return; |
102 | } | 102 | } |
103 | 103 | ||
104 | // Define the query for birthdays and start search.. | 104 | // Define the query for birthdays and start search.. |
105 | QDate lookAheadDate = QDate::currentDate().addDays( m_daysLookAhead ); | 105 | QDate lookAheadDate = QDate::currentDate().addDays( m_daysLookAhead ); |
106 | int ammount = 0; | 106 | int ammount = 0; |
107 | if ( m_showBirthdays ){ | 107 | if ( m_showBirthdays ){ |
108 | qWarning("Searching from now (%s) until %s ! ", | 108 | qWarning("Searching from now (%s) until %s ! ", |
109 | QDate::currentDate().toString().latin1(), | 109 | QDate::currentDate().toString().latin1(), |
110 | lookAheadDate.toString().latin1() ); | 110 | lookAheadDate.toString().latin1() ); |
111 | } | 111 | } |
112 | 112 | ||
113 | if ( m_contactdb->hasQuerySettings( OContactAccess::DateDiff ) ){ | 113 | if ( m_contactdb->hasQuerySettings( OContactAccess::DateDiff ) ){ |
114 | 114 | ||
115 | 115 | ||
116 | OContact querybirthdays; | 116 | OContact querybirthdays; |
117 | querybirthdays.setBirthday( lookAheadDate ); | 117 | querybirthdays.setBirthday( lookAheadDate ); |
118 | 118 | ||
119 | m_list = m_contactdb->queryByExample( querybirthdays, | 119 | m_list = m_contactdb->queryByExample( querybirthdays, |
120 | OContactAccess::DateDiff ); | 120 | OContactAccess::DateDiff ); |
121 | if ( m_list.count() > 0 ){ | 121 | if ( m_list.count() > 0 ){ |
122 | output = "<font color=" + m_headlineColor + ">" | 122 | output = "<font color=" + m_headlineColor + ">" |
123 | + QObject::tr( "Next birthdays in <b> %1 </b> days:" ) | 123 | + QObject::tr( "Next birthdays in <b> %1 </b> days:" ) |
124 | .arg( m_daysLookAhead ) | 124 | .arg( m_daysLookAhead ) |
125 | + "</font> <br>"; | 125 | + "</font> <br>"; |
126 | for ( m_it = m_list.begin(); m_it != m_list.end(); ++m_it ) { | 126 | for ( m_it = m_list.begin(); m_it != m_list.end(); ++m_it ) { |
127 | if ( ammount++ < m_maxLinesTask ){ | 127 | if ( ammount++ < m_maxLinesTask ){ |
128 | // Now we want to calculate how many days | 128 | // Now we want to calculate how many days |
129 | //until birthday. We have to set | 129 | //until birthday. We have to set |
130 | // the correct year to calculate the day diff... | 130 | // the correct year to calculate the day diff... |
131 | QDate destdate = (*m_it).birthday(); | 131 | QDate destdate = (*m_it).birthday(); |
132 | destdate.setYMD( QDate::currentDate().year(), | 132 | destdate.setYMD( QDate::currentDate().year(), |
133 | destdate.month(), destdate.day() ); | 133 | destdate.month(), destdate.day() ); |
134 | if ( QDate::currentDate().daysTo(destdate) < 0 ) | 134 | if ( QDate::currentDate().daysTo(destdate) < 0 ) |
135 | destdate.setYMD( QDate::currentDate().year()+1, | 135 | destdate.setYMD( QDate::currentDate().year()+1, |
136 | destdate.month(), destdate.day() ); | 136 | destdate.month(), destdate.day() ); |
137 | 137 | ||
diff --git a/core/pim/today/plugins/datebook/datebookpluginwidget.cpp b/core/pim/today/plugins/datebook/datebookpluginwidget.cpp index b6707df..0820802 100644 --- a/core/pim/today/plugins/datebook/datebookpluginwidget.cpp +++ b/core/pim/today/plugins/datebook/datebookpluginwidget.cpp | |||
@@ -6,135 +6,135 @@ | |||
6 | * | 6 | * |
7 | */ | 7 | */ |
8 | /*************************************************************************** | 8 | /*************************************************************************** |
9 | * * | 9 | * * |
10 | * This program is free software; you can redistribute it and/or modify * | 10 | * This program is free software; you can redistribute it and/or modify * |
11 | * it under the terms of the GNU General Public License as published by * | 11 | * it under the terms of the GNU General Public License as published by * |
12 | * the Free Software Foundation; either version 2 of the License, or * | 12 | * the Free Software Foundation; either version 2 of the License, or * |
13 | * (at your option) any later version. * | 13 | * (at your option) any later version. * |
14 | * * | 14 | * * |
15 | ***************************************************************************/ | 15 | ***************************************************************************/ |
16 | 16 | ||
17 | 17 | ||
18 | #include "datebookpluginwidget.h" | 18 | #include "datebookpluginwidget.h" |
19 | 19 | ||
20 | #include <qpe/config.h> | 20 | #include <qpe/config.h> |
21 | 21 | ||
22 | #include <qtl.h> | 22 | #include <qtl.h> |
23 | 23 | ||
24 | DatebookPluginWidget::DatebookPluginWidget( QWidget *parent, const char* name ) | 24 | DatebookPluginWidget::DatebookPluginWidget( QWidget *parent, const char* name ) |
25 | : QWidget(parent, name ) { | 25 | : QWidget(parent, name ) { |
26 | 26 | ||
27 | db = 0l; | 27 | db = 0l; |
28 | m_layoutDates = 0l; | 28 | m_layoutDates = 0l; |
29 | 29 | ||
30 | if ( m_layoutDates ) { | 30 | if ( m_layoutDates ) { |
31 | delete m_layoutDates; | 31 | delete m_layoutDates; |
32 | } | 32 | } |
33 | m_layoutDates = new QVBoxLayout( this ); | 33 | m_layoutDates = new QVBoxLayout( this ); |
34 | m_layoutDates->setAutoAdd( true ); | 34 | m_layoutDates->setAutoAdd( true ); |
35 | 35 | ||
36 | m_eventsList.setAutoDelete( true ); | 36 | m_eventsList.setAutoDelete( true ); |
37 | 37 | ||
38 | readConfig(); | 38 | readConfig(); |
39 | getDates(); | 39 | getDates(); |
40 | } | 40 | } |
41 | 41 | ||
42 | DatebookPluginWidget::~DatebookPluginWidget() { | 42 | DatebookPluginWidget::~DatebookPluginWidget() { |
43 | delete db; | 43 | delete db; |
44 | delete m_layoutDates; | 44 | delete m_layoutDates; |
45 | } | 45 | } |
46 | 46 | ||
47 | 47 | ||
48 | void DatebookPluginWidget::readConfig() { | 48 | void DatebookPluginWidget::readConfig() { |
49 | Config cfg( "todaydatebookplugin" ); | 49 | Config cfg( "todaydatebookplugin" ); |
50 | cfg.setGroup( "config" ); | 50 | cfg.setGroup( "config" ); |
51 | m_max_lines_meet = cfg.readNumEntry( "maxlinesmeet", 5 ); | 51 | m_max_lines_meet = cfg.readNumEntry( "maxlinesmeet", 5 ); |
52 | m_show_location = cfg.readNumEntry( "showlocation", 1 ); | 52 | m_show_location = cfg.readNumEntry( "showlocation", 1 ); |
53 | m_show_notes = cfg.readNumEntry( "shownotes", 0 ); | 53 | m_show_notes = cfg.readNumEntry( "shownotes", 0 ); |
54 | m_onlyLater = cfg.readNumEntry( "onlylater", 1 ); | 54 | m_onlyLater = cfg.readNumEntry( "onlylater", 1 ); |
55 | m_moreDays = cfg.readNumEntry( "moredays", 0 ); | 55 | m_moreDays = cfg.readNumEntry( "moredays", 0 ); |
56 | m_timeExtraLine = cfg.readNumEntry( "timeextraline", 1 ); | 56 | m_timeExtraLine = cfg.readNumEntry( "timeextraline", 1 ); |
57 | } | 57 | } |
58 | 58 | ||
59 | void DatebookPluginWidget::reinitialize() { | 59 | void DatebookPluginWidget::reinitialize() { |
60 | readConfig(); | 60 | readConfig(); |
61 | refresh(); | 61 | refresh(); |
62 | } | 62 | } |
63 | 63 | ||
64 | void DatebookPluginWidget::refresh() { | 64 | void DatebookPluginWidget::refresh() { |
65 | m_eventsList.clear(); | 65 | m_eventsList.clear(); |
66 | 66 | ||
67 | if ( m_layoutDates ) { | 67 | if ( m_layoutDates ) { |
68 | delete m_layoutDates; | 68 | delete m_layoutDates; |
69 | } | 69 | } |
70 | m_layoutDates = new QVBoxLayout( this ); | 70 | m_layoutDates = new QVBoxLayout( this ); |
71 | m_layoutDates->setAutoAdd( true ); | 71 | m_layoutDates->setAutoAdd( true ); |
72 | 72 | ||
73 | getDates(); | 73 | getDates(); |
74 | } | 74 | } |
75 | 75 | ||
76 | /** | 76 | /** |
77 | * Get all events that are in the datebook xml file for today | 77 | * Get all events that are in the datebook xml file for today |
78 | */ | 78 | */ |
79 | void DatebookPluginWidget::getDates() { | 79 | void DatebookPluginWidget::getDates() { |
80 | 80 | ||
81 | 81 | ||
82 | if ( db ) { | 82 | if ( db ) { |
83 | delete db; | 83 | delete db; |
84 | } | 84 | } |
85 | db = new DateBookDB; | 85 | db = new DateBookDB; |
86 | 86 | ||
87 | QDate date = QDate::currentDate(); | 87 | QDate date = QDate::currentDate(); |
88 | QValueList<EffectiveEvent> list = db->getEffectiveEvents( date, date.addDays( m_moreDays ) ); | 88 | QValueList<EffectiveEvent> list = db->getEffectiveEvents( date, date.addDays( m_moreDays ) ); |
89 | qBubbleSort( list ); | 89 | qBubbleSort( list ); |
90 | int count = 0; | 90 | int count = 0; |
91 | 91 | ||
92 | if ( list.count() > 0 ) { | 92 | if ( list.count() > 0 ) { |
93 | 93 | ||
94 | for ( QValueList<EffectiveEvent>::ConstIterator it = list.begin(); it != list.end(); ++it ) { | 94 | for ( QValueList<EffectiveEvent>::ConstIterator it = list.begin(); it != list.end(); ++it ) { |
95 | 95 | ||
96 | if ( count < m_max_lines_meet ) { | 96 | if ( count < m_max_lines_meet ) { |
97 | if ( !m_onlyLater ) { | 97 | if ( !m_onlyLater ) { |
98 | count++; | 98 | count++; |
99 | DateBookEvent *l = new DateBookEvent( *it, this, m_show_location, m_show_notes, m_timeExtraLine ); | 99 | DateBookEvent *l = new DateBookEvent( *it, this, m_show_location, m_show_notes, m_timeExtraLine ); |
100 | m_eventsList.append( l ); | 100 | m_eventsList.append( l ); |
101 | l->show(); | 101 | l->show(); |
102 | QObject::connect ( l, SIGNAL( editEvent( const Event & ) ), l, SLOT( editEventSlot( const Event & ) ) ); | 102 | QObject::connect ( l, SIGNAL( editEvent(const Event&) ), l, SLOT( editEventSlot(const Event&) ) ); |
103 | } else { | 103 | } else { |
104 | if ( ( QDateTime::currentDateTime() <= (*it).event().end() ) | 104 | if ( ( QDateTime::currentDateTime() <= (*it).event().end() ) |
105 | // Show events which span over many days and are not elapsed. | 105 | // Show events which span over many days and are not elapsed. |
106 | || ( ( (*it).event().start().date() != date ) && ( QDateTime::currentDateTime() <= (*it).event().end() ) ) | 106 | || ( ( (*it).event().start().date() != date ) && ( QDateTime::currentDateTime() <= (*it).event().end() ) ) |
107 | // Show repeated event for today that is not elapsed. | 107 | // Show repeated event for today that is not elapsed. |
108 | || ( ( (*it).event().repeatType() != Event::NoRepeat ) | 108 | || ( ( (*it).event().repeatType() != Event::NoRepeat ) |
109 | && ( ( date.dayOfWeek() == (*it).date().dayOfWeek() ) | 109 | && ( ( date.dayOfWeek() == (*it).date().dayOfWeek() ) |
110 | && ( QTime::currentTime() < (*it).event().start().time() ) ) ) | 110 | && ( QTime::currentTime() < (*it).event().start().time() ) ) ) |
111 | // Show repeated event for next days. | 111 | // Show repeated event for next days. |
112 | || ( ( (*it).event().repeatType() != Event::NoRepeat ) | 112 | || ( ( (*it).event().repeatType() != Event::NoRepeat ) |
113 | && ( date.dayOfWeek() != (*it).date().dayOfWeek() ) ) | 113 | && ( date.dayOfWeek() != (*it).date().dayOfWeek() ) ) |
114 | ) | 114 | ) |
115 | { | 115 | { |
116 | count++; | 116 | count++; |
117 | // show only later appointments | 117 | // show only later appointments |
118 | DateBookEvent *l = new DateBookEvent( *it, this, m_show_location, m_show_notes, m_timeExtraLine ); | 118 | DateBookEvent *l = new DateBookEvent( *it, this, m_show_location, m_show_notes, m_timeExtraLine ); |
119 | m_eventsList.append( l ); | 119 | m_eventsList.append( l ); |
120 | l->show(); | 120 | l->show(); |
121 | QObject::connect ( l, SIGNAL( editEvent( const Event & ) ), l, SLOT( editEventSlot( const Event & ) ) ); | 121 | QObject::connect ( l, SIGNAL( editEvent(const Event&) ), l, SLOT( editEventSlot(const Event&) ) ); |
122 | } | 122 | } |
123 | } | 123 | } |
124 | } | 124 | } |
125 | } | 125 | } |
126 | if ( m_onlyLater && count == 0 ) { | 126 | if ( m_onlyLater && count == 0 ) { |
127 | QLabel* noMoreEvents = new QLabel( this ); | 127 | QLabel* noMoreEvents = new QLabel( this ); |
128 | m_eventsList.append( noMoreEvents ); | 128 | m_eventsList.append( noMoreEvents ); |
129 | noMoreEvents->show(); | 129 | noMoreEvents->show(); |
130 | noMoreEvents->setText( QObject::tr( "No more appointments today" ) ); | 130 | noMoreEvents->setText( QObject::tr( "No more appointments today" ) ); |
131 | } | 131 | } |
132 | } else { | 132 | } else { |
133 | QLabel* noEvents = new QLabel( this ); | 133 | QLabel* noEvents = new QLabel( this ); |
134 | m_eventsList.append( noEvents ); | 134 | m_eventsList.append( noEvents ); |
135 | noEvents->show(); | 135 | noEvents->show(); |
136 | noEvents->setText( QObject::tr( "No appointments today" ) ); | 136 | noEvents->setText( QObject::tr( "No appointments today" ) ); |
137 | } | 137 | } |
138 | } | 138 | } |
139 | 139 | ||
140 | 140 | ||
diff --git a/core/pim/today/plugins/mail/mailpluginwidget.cpp b/core/pim/today/plugins/mail/mailpluginwidget.cpp index 4194270..a8e4c41 100644 --- a/core/pim/today/plugins/mail/mailpluginwidget.cpp +++ b/core/pim/today/plugins/mail/mailpluginwidget.cpp | |||
@@ -1,97 +1,97 @@ | |||
1 | /* | 1 | /* |
2 | * mailpluginwidget.cpp | 2 | * mailpluginwidget.cpp |
3 | * | 3 | * |
4 | * copyright : (c) 2002,2003,2004 by Maximilian Reiß | 4 | * copyright : (c) 2002,2003,2004 by Maximilian Reiß |
5 | * email : harlekin@handhelds.org | 5 | * email : harlekin@handhelds.org |
6 | * | 6 | * |
7 | */ | 7 | */ |
8 | /*************************************************************************** | 8 | /*************************************************************************** |
9 | * * | 9 | * * |
10 | * This program is free software; you can redistribute it and/or modify * | 10 | * This program is free software; you can redistribute it and/or modify * |
11 | * it under the terms of the GNU General Public License as published by * | 11 | * it under the terms of the GNU General Public License as published by * |
12 | * the Free Software Foundation; either version 2 of the License, or * | 12 | * the Free Software Foundation; either version 2 of the License, or * |
13 | * (at your option) any later version. * | 13 | * (at your option) any later version. * |
14 | * * | 14 | * * |
15 | ***************************************************************************/ | 15 | ***************************************************************************/ |
16 | #include "mailpluginwidget.h" | 16 | #include "mailpluginwidget.h" |
17 | 17 | ||
18 | #include <qpe/config.h> | 18 | #include <qpe/config.h> |
19 | #include <qpe/qcopenvelope_qws.h> | 19 | #include <qpe/qcopenvelope_qws.h> |
20 | 20 | ||
21 | MailPluginWidget::MailPluginWidget( QWidget *parent, const char* name) | 21 | MailPluginWidget::MailPluginWidget( QWidget *parent, const char* name) |
22 | : QWidget(parent, name ) { | 22 | : QWidget(parent, name ) { |
23 | 23 | ||
24 | m_mailLabel = 0l; | 24 | m_mailLabel = 0l; |
25 | m_layout = 0l; | 25 | m_layout = 0l; |
26 | 26 | ||
27 | if ( m_mailLabel ) { | 27 | if ( m_mailLabel ) { |
28 | delete m_mailLabel; | 28 | delete m_mailLabel; |
29 | } | 29 | } |
30 | m_mailLabel = new OClickableLabel( this ); | 30 | m_mailLabel = new OClickableLabel( this ); |
31 | connect( m_mailLabel, SIGNAL( clicked() ), this, SLOT( startMail() ) ); | 31 | connect( m_mailLabel, SIGNAL( clicked() ), this, SLOT( startMail() ) ); |
32 | 32 | ||
33 | if ( m_layout ) { | 33 | if ( m_layout ) { |
34 | delete m_layout; | 34 | delete m_layout; |
35 | } | 35 | } |
36 | m_layout = new QHBoxLayout( this ); | 36 | m_layout = new QHBoxLayout( this ); |
37 | m_layout->setAutoAdd( true ); | 37 | m_layout->setAutoAdd( true ); |
38 | 38 | ||
39 | 39 | ||
40 | #if defined(Q_WS_QWS) | 40 | #if defined(Q_WS_QWS) |
41 | #if !defined(QT_NO_COP) | 41 | #if !defined(QT_NO_COP) |
42 | QCopChannel *qCopChannel = new QCopChannel( "QPE/Pim" , this ); | 42 | QCopChannel *qCopChannel = new QCopChannel( "QPE/Pim" , this ); |
43 | connect ( qCopChannel, SIGNAL( received( const QCString &, const QByteArray &) ), | 43 | connect ( qCopChannel, SIGNAL( received(const QCString&,const QByteArray&) ), |
44 | this, SLOT ( channelReceived( const QCString &, const QByteArray &) ) ); | 44 | this, SLOT ( channelReceived(const QCString&,const QByteArray&) ) ); |
45 | #endif | 45 | #endif |
46 | #endif | 46 | #endif |
47 | 47 | ||
48 | readConfig(); | 48 | readConfig(); |
49 | getInfo(); | 49 | getInfo(); |
50 | } | 50 | } |
51 | 51 | ||
52 | 52 | ||
53 | void MailPluginWidget::channelReceived( const QCString &msg, const QByteArray & data ) { | 53 | void MailPluginWidget::channelReceived( const QCString &msg, const QByteArray & data ) { |
54 | QDataStream stream( data, IO_ReadOnly ); | 54 | QDataStream stream( data, IO_ReadOnly ); |
55 | if ( msg == "outgoingMails(int)" ) { | 55 | if ( msg == "outgoingMails(int)" ) { |
56 | stream >> m_outgoing; | 56 | stream >> m_outgoing; |
57 | } else if ( msg == "newMails(int)" ) { | 57 | } else if ( msg == "newMails(int)" ) { |
58 | stream >> m_newMails; | 58 | stream >> m_newMails; |
59 | } | 59 | } |
60 | getInfo(); | 60 | getInfo(); |
61 | } | 61 | } |
62 | MailPluginWidget::~MailPluginWidget() { | 62 | MailPluginWidget::~MailPluginWidget() { |
63 | delete m_mailLabel; | 63 | delete m_mailLabel; |
64 | delete m_layout; | 64 | delete m_layout; |
65 | } | 65 | } |
66 | 66 | ||
67 | 67 | ||
68 | void MailPluginWidget::readConfig() { | 68 | void MailPluginWidget::readConfig() { |
69 | Config cfg( "todaymailplugin" ); | 69 | Config cfg( "todaymailplugin" ); |
70 | cfg.setGroup( "config" ); | 70 | cfg.setGroup( "config" ); |
71 | 71 | ||
72 | Config cfg2( "mail" ); | 72 | Config cfg2( "mail" ); |
73 | cfg2.setGroup( "Status" ); | 73 | cfg2.setGroup( "Status" ); |
74 | 74 | ||
75 | m_newMails = cfg2.readNumEntry( "newMails", 0 ); | 75 | m_newMails = cfg2.readNumEntry( "newMails", 0 ); |
76 | m_outgoing = cfg2.readNumEntry( "outgoing", 0 ); | 76 | m_outgoing = cfg2.readNumEntry( "outgoing", 0 ); |
77 | } | 77 | } |
78 | 78 | ||
79 | 79 | ||
80 | void MailPluginWidget::refresh() { | 80 | void MailPluginWidget::refresh() { |
81 | getInfo(); | 81 | getInfo(); |
82 | } | 82 | } |
83 | 83 | ||
84 | void MailPluginWidget::getInfo() { | 84 | void MailPluginWidget::getInfo() { |
85 | 85 | ||
86 | 86 | ||
87 | 87 | ||
88 | m_mailLabel->setText( QObject::tr( "<b>%1</b> new mail(s), <b>%2</b> outgoing" ).arg( m_newMails ).arg( m_outgoing ) ); | 88 | m_mailLabel->setText( QObject::tr( "<b>%1</b> new mail(s), <b>%2</b> outgoing" ).arg( m_newMails ).arg( m_outgoing ) ); |
89 | } | 89 | } |
90 | 90 | ||
91 | /** | 91 | /** |
92 | * launches datebook | 92 | * launches datebook |
93 | */ | 93 | */ |
94 | void MailPluginWidget::startMail() { | 94 | void MailPluginWidget::startMail() { |
95 | QCopEnvelope e("QPE/System", "execute(QString)"); | 95 | QCopEnvelope e("QPE/System", "execute(QString)"); |
96 | e << QString( "opiemail" ); | 96 | e << QString( "opiemail" ); |
97 | } | 97 | } |
diff --git a/core/pim/today/today.cpp b/core/pim/today/today.cpp index 72cdfd6..812f8b5 100644 --- a/core/pim/today/today.cpp +++ b/core/pim/today/today.cpp | |||
@@ -1,153 +1,153 @@ | |||
1 | /* | 1 | /* |
2 | * today.cpp | 2 | * today.cpp |
3 | * | 3 | * |
4 | * copyright : (c) 2002,2003,2004 by Maximilian Reiß | 4 | * copyright : (c) 2002,2003,2004 by Maximilian Reiß |
5 | * email : harlekin@handhelds.org | 5 | * email : harlekin@handhelds.org |
6 | * | 6 | * |
7 | */ | 7 | */ |
8 | /*************************************************************************** | 8 | /*************************************************************************** |
9 | * * | 9 | * * |
10 | * This program is free software; you can redistribute it and/or modify * | 10 | * This program is free software; you can redistribute it and/or modify * |
11 | * it under the terms of the GNU General Public License as published by * | 11 | * it under the terms of the GNU General Public License as published by * |
12 | * the Free Software Foundation; either version 2 of the License, or * | 12 | * the Free Software Foundation; either version 2 of the License, or * |
13 | * (at your option) any later version. * | 13 | * (at your option) any later version. * |
14 | * * | 14 | * * |
15 | ***************************************************************************/ | 15 | ***************************************************************************/ |
16 | 16 | ||
17 | #define QTOPIA_INTERNAL_LANGLIST | 17 | #define QTOPIA_INTERNAL_LANGLIST |
18 | 18 | ||
19 | #include "today.h" | 19 | #include "today.h" |
20 | 20 | ||
21 | #include <qpe/config.h> | 21 | #include <qpe/config.h> |
22 | #include <qpe/qcopenvelope_qws.h> | 22 | #include <qpe/qcopenvelope_qws.h> |
23 | #include <qpe/resource.h> | 23 | #include <qpe/resource.h> |
24 | #include <qpe/qpeapplication.h> | 24 | #include <qpe/qpeapplication.h> |
25 | #include <qpe/contact.h> | 25 | #include <qpe/contact.h> |
26 | 26 | ||
27 | #include <qdir.h> | 27 | #include <qdir.h> |
28 | #include <qtimer.h> | 28 | #include <qtimer.h> |
29 | #include <qwhatsthis.h> | 29 | #include <qwhatsthis.h> |
30 | 30 | ||
31 | struct TodayPlugin { | 31 | struct TodayPlugin { |
32 | TodayPlugin() : library( 0 ), iface( 0 ), guiPart( 0 ), guiBox( 0 ) {} | 32 | TodayPlugin() : library( 0 ), iface( 0 ), guiPart( 0 ), guiBox( 0 ) {} |
33 | QLibrary *library; | 33 | QLibrary *library; |
34 | QInterfacePtr<TodayPluginInterface> iface; | 34 | QInterfacePtr<TodayPluginInterface> iface; |
35 | TodayPluginObject *guiPart; | 35 | TodayPluginObject *guiPart; |
36 | QWidget *guiBox; | 36 | QWidget *guiBox; |
37 | QString name; | 37 | QString name; |
38 | bool active; | 38 | bool active; |
39 | bool excludeRefresh; | 39 | bool excludeRefresh; |
40 | int pos; | 40 | int pos; |
41 | }; | 41 | }; |
42 | 42 | ||
43 | static QValueList<TodayPlugin> pluginList; | 43 | static QValueList<TodayPlugin> pluginList; |
44 | 44 | ||
45 | static QMap<QString, TodayPlugin> tempList; | 45 | static QMap<QString, TodayPlugin> tempList; |
46 | 46 | ||
47 | Today::Today( QWidget* parent, const char* name, WFlags fl ) | 47 | Today::Today( QWidget* parent, const char* name, WFlags fl ) |
48 | : TodayBase( parent, name, fl ) { | 48 | : TodayBase( parent, name, fl ) { |
49 | 49 | ||
50 | QObject::connect( (QObject*)ConfigButton, SIGNAL( clicked() ), this, SLOT( startConfig() ) ); | 50 | QObject::connect( (QObject*)ConfigButton, SIGNAL( clicked() ), this, SLOT( startConfig() ) ); |
51 | QObject::connect( (QObject*)OwnerField, SIGNAL( clicked() ), this, SLOT( editCard() ) ); | 51 | QObject::connect( (QObject*)OwnerField, SIGNAL( clicked() ), this, SLOT( editCard() ) ); |
52 | 52 | ||
53 | #if defined(Q_WS_QWS) | 53 | #if defined(Q_WS_QWS) |
54 | #if !defined(QT_NO_COP) | 54 | #if !defined(QT_NO_COP) |
55 | QCopChannel *todayChannel = new QCopChannel( "QPE/Today" , this ); | 55 | QCopChannel *todayChannel = new QCopChannel( "QPE/Today" , this ); |
56 | connect ( todayChannel, SIGNAL( received( const QCString &, const QByteArray &) ), | 56 | connect ( todayChannel, SIGNAL( received(const QCString&,const QByteArray&) ), |
57 | this, SLOT ( channelReceived( const QCString &, const QByteArray &) ) ); | 57 | this, SLOT ( channelReceived(const QCString&,const QByteArray&) ) ); |
58 | #endif | 58 | #endif |
59 | #endif | 59 | #endif |
60 | 60 | ||
61 | setOwnerField(); | 61 | setOwnerField(); |
62 | m_refreshTimer = new QTimer( this ); | 62 | m_refreshTimer = new QTimer( this ); |
63 | connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); | 63 | connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); |
64 | m_refreshTimer->start( 15000 ); | 64 | m_refreshTimer->start( 15000 ); |
65 | m_big_box = 0L; | 65 | m_big_box = 0L; |
66 | 66 | ||
67 | 67 | ||
68 | layout = new QVBoxLayout( this ); | 68 | layout = new QVBoxLayout( this ); |
69 | layout->addWidget( Frame ); | 69 | layout->addWidget( Frame ); |
70 | layout->addWidget( OwnerField ); | 70 | layout->addWidget( OwnerField ); |
71 | 71 | ||
72 | m_sv = new QScrollView( this ); | 72 | m_sv = new QScrollView( this ); |
73 | m_sv->setResizePolicy( QScrollView::AutoOneFit ); | 73 | m_sv->setResizePolicy( QScrollView::AutoOneFit ); |
74 | m_sv->setHScrollBarMode( QScrollView::AlwaysOff ); | 74 | m_sv->setHScrollBarMode( QScrollView::AlwaysOff ); |
75 | m_sv->setFrameShape( QFrame::NoFrame ); | 75 | m_sv->setFrameShape( QFrame::NoFrame ); |
76 | 76 | ||
77 | layout->addWidget( m_sv ); | 77 | layout->addWidget( m_sv ); |
78 | layout->setStretchFactor( m_sv,4 ); | 78 | layout->setStretchFactor( m_sv,4 ); |
79 | 79 | ||
80 | qApp->processEvents(); | 80 | qApp->processEvents(); |
81 | loadPlugins(); | 81 | loadPlugins(); |
82 | QPEApplication::showWidget( this ); | 82 | QPEApplication::showWidget( this ); |
83 | } | 83 | } |
84 | 84 | ||
85 | /** | 85 | /** |
86 | * Qcop receive method. | 86 | * Qcop receive method. |
87 | */ | 87 | */ |
88 | void Today::channelReceived( const QCString &msg, const QByteArray & data ) { | 88 | void Today::channelReceived( const QCString &msg, const QByteArray & data ) { |
89 | QDataStream stream( data, IO_ReadOnly ); | 89 | QDataStream stream( data, IO_ReadOnly ); |
90 | if ( msg == "message(QString)" ) { | 90 | if ( msg == "message(QString)" ) { |
91 | QString message; | 91 | QString message; |
92 | stream >> message; | 92 | stream >> message; |
93 | setOwnerField( message ); | 93 | setOwnerField( message ); |
94 | } | 94 | } |
95 | } | 95 | } |
96 | 96 | ||
97 | void Today::setRefreshTimer( int interval ) { | 97 | void Today::setRefreshTimer( int interval ) { |
98 | 98 | ||
99 | disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); | 99 | disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); |
100 | 100 | ||
101 | // 0 is "never" case | 101 | // 0 is "never" case |
102 | if ( !interval == 0 ) { | 102 | if ( !interval == 0 ) { |
103 | connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); | 103 | connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); |
104 | m_refreshTimer->changeInterval( interval ); | 104 | m_refreshTimer->changeInterval( interval ); |
105 | } | 105 | } |
106 | } | 106 | } |
107 | 107 | ||
108 | 108 | ||
109 | /** | 109 | /** |
110 | * Initialises the owner field with the default value, the username | 110 | * Initialises the owner field with the default value, the username |
111 | */ | 111 | */ |
112 | void Today::setOwnerField() { | 112 | void Today::setOwnerField() { |
113 | QString file = Global::applicationFileName( "addressbook", "businesscard.vcf" ); | 113 | QString file = Global::applicationFileName( "addressbook", "businesscard.vcf" ); |
114 | if ( QFile::exists( file ) ) { | 114 | if ( QFile::exists( file ) ) { |
115 | Contact cont = Contact::readVCard( file )[0]; | 115 | Contact cont = Contact::readVCard( file )[0]; |
116 | QString returnString = cont.fullName(); | 116 | QString returnString = cont.fullName(); |
117 | OwnerField->setText( "<b>" + tr ( "Owned by " ) + returnString + "</b>" ); | 117 | OwnerField->setText( "<b>" + tr ( "Owned by " ) + returnString + "</b>" ); |
118 | } else { | 118 | } else { |
119 | OwnerField->setText( "<b>" + tr ( "Please fill out the business card" ) + " </b>" ); | 119 | OwnerField->setText( "<b>" + tr ( "Please fill out the business card" ) + " </b>" ); |
120 | } | 120 | } |
121 | } | 121 | } |
122 | 122 | ||
123 | /** | 123 | /** |
124 | * Set the owner field with a given QString, for example per qcop. | 124 | * Set the owner field with a given QString, for example per qcop. |
125 | */ | 125 | */ |
126 | void Today::setOwnerField( QString &message ) { | 126 | void Today::setOwnerField( QString &message ) { |
127 | if ( !message.isEmpty() ) { | 127 | if ( !message.isEmpty() ) { |
128 | OwnerField->setText( "<b>" + message + "</b>" ); | 128 | OwnerField->setText( "<b>" + message + "</b>" ); |
129 | } | 129 | } |
130 | } | 130 | } |
131 | 131 | ||
132 | /** | 132 | /** |
133 | * Init stuff needed for today. Reads the config file. | 133 | * Init stuff needed for today. Reads the config file. |
134 | */ | 134 | */ |
135 | void Today::init() { | 135 | void Today::init() { |
136 | // read config | 136 | // read config |
137 | Config cfg( "today" ); | 137 | Config cfg( "today" ); |
138 | 138 | ||
139 | cfg.setGroup( "Plugins" ); | 139 | cfg.setGroup( "Plugins" ); |
140 | m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' ); | 140 | m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' ); |
141 | m_allApplets = cfg.readListEntry( "AllApplets", ',' ); | 141 | m_allApplets = cfg.readListEntry( "AllApplets", ',' ); |
142 | 142 | ||
143 | cfg.setGroup( "General" ); | 143 | cfg.setGroup( "General" ); |
144 | m_iconSize = cfg.readNumEntry( "IconSize", 18 ); | 144 | m_iconSize = cfg.readNumEntry( "IconSize", 18 ); |
145 | m_hideBanner = cfg.readNumEntry( "HideBanner", 0 ); | 145 | m_hideBanner = cfg.readNumEntry( "HideBanner", 0 ); |
146 | setRefreshTimer( cfg.readNumEntry( "checkinterval", 15000 ) ); | 146 | setRefreshTimer( cfg.readNumEntry( "checkinterval", 15000 ) ); |
147 | 147 | ||
148 | // set the date in top label | 148 | // set the date in top label |
149 | QDate date = QDate::currentDate(); | 149 | QDate date = QDate::currentDate(); |
150 | DateLabel->setText( QString( "<font color=#FFFFFF>" + TimeString::longDateString( date ) + "</font>" ) ); | 150 | DateLabel->setText( QString( "<font color=#FFFFFF>" + TimeString::longDateString( date ) + "</font>" ) ); |
151 | 151 | ||
152 | if ( m_hideBanner ) { | 152 | if ( m_hideBanner ) { |
153 | Opiezilla->hide(); | 153 | Opiezilla->hide(); |
diff --git a/core/pim/today/todayconfig.cpp b/core/pim/today/todayconfig.cpp index 5c51515..a6f53e1 100644 --- a/core/pim/today/todayconfig.cpp +++ b/core/pim/today/todayconfig.cpp | |||
@@ -1,184 +1,184 @@ | |||
1 | /* | 1 | /* |
2 | * todayconfig.cpp | 2 | * todayconfig.cpp |
3 | * | 3 | * |
4 | * copyright : (c) 2002, 2003, 2004 by Maximilian Reiß | 4 | * copyright : (c) 2002, 2003, 2004 by Maximilian Reiß |
5 | * email : harlekin@handhelds.org | 5 | * email : harlekin@handhelds.org |
6 | * | 6 | * |
7 | */ | 7 | */ |
8 | /*************************************************************************** | 8 | /*************************************************************************** |
9 | * * | 9 | * * |
10 | * This program is free software; you can redistribute it and/or modify * | 10 | * This program is free software; you can redistribute it and/or modify * |
11 | * it under the terms of the GNU General Public License as published by * | 11 | * it under the terms of the GNU General Public License as published by * |
12 | * the Free Software Foundation; either version 2 of the License, or * | 12 | * the Free Software Foundation; either version 2 of the License, or * |
13 | * (at your option) any later version. * | 13 | * (at your option) any later version. * |
14 | * * | 14 | * * |
15 | ***************************************************************************/ | 15 | ***************************************************************************/ |
16 | 16 | ||
17 | #include "todayconfig.h" | 17 | #include "todayconfig.h" |
18 | 18 | ||
19 | #include <qpe/config.h> | 19 | #include <qpe/config.h> |
20 | #include <qpe/resource.h> | 20 | #include <qpe/resource.h> |
21 | #include <qpe/qcopenvelope_qws.h> | 21 | #include <qpe/qcopenvelope_qws.h> |
22 | #include <qpe/qpeapplication.h> | 22 | #include <qpe/qpeapplication.h> |
23 | 23 | ||
24 | #include <qcheckbox.h> | 24 | #include <qcheckbox.h> |
25 | #include <qlabel.h> | 25 | #include <qlabel.h> |
26 | #include <qspinbox.h> | 26 | #include <qspinbox.h> |
27 | #include <qlayout.h> | 27 | #include <qlayout.h> |
28 | #include <qheader.h> | 28 | #include <qheader.h> |
29 | #include <qvbox.h> | 29 | #include <qvbox.h> |
30 | #include <qtoolbutton.h> | 30 | #include <qtoolbutton.h> |
31 | #include <qwhatsthis.h> | 31 | #include <qwhatsthis.h> |
32 | 32 | ||
33 | class ToolButton : public QToolButton { | 33 | class ToolButton : public QToolButton { |
34 | 34 | ||
35 | public: | 35 | public: |
36 | ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE ) | 36 | ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE ) |
37 | : QToolButton( parent, name ) { | 37 | : QToolButton( parent, name ) { |
38 | setPixmap( Resource::loadPixmap( icon ) ); | 38 | setPixmap( Resource::loadPixmap( icon ) ); |
39 | setAutoRaise( TRUE ); | 39 | setAutoRaise( TRUE ); |
40 | setFocusPolicy( QWidget::NoFocus ); | 40 | setFocusPolicy( QWidget::NoFocus ); |
41 | setToggleButton( t ); | 41 | setToggleButton( t ); |
42 | connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot ); | 42 | connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot ); |
43 | } | 43 | } |
44 | }; | 44 | }; |
45 | 45 | ||
46 | 46 | ||
47 | /** | 47 | /** |
48 | * The class has currently quite some duplicate code. | 48 | * The class has currently quite some duplicate code. |
49 | * By that way it would be real easy to have it as seperate app in settings tab | 49 | * By that way it would be real easy to have it as seperate app in settings tab |
50 | * | 50 | * |
51 | */ | 51 | */ |
52 | TodayConfig::TodayConfig( QWidget* parent, const char* name, bool modal ) | 52 | TodayConfig::TodayConfig( QWidget* parent, const char* name, bool modal ) |
53 | : QDialog( parent, name, modal, WStyle_ContextHelp ) { | 53 | : QDialog( parent, name, modal, WStyle_ContextHelp ) { |
54 | 54 | ||
55 | setCaption( tr( "Today Config" ) ); | 55 | setCaption( tr( "Today Config" ) ); |
56 | 56 | ||
57 | QVBoxLayout *layout = new QVBoxLayout( this ); | 57 | QVBoxLayout *layout = new QVBoxLayout( this ); |
58 | TabWidget3 = new OTabWidget ( this, "tabwidget", OTabWidget::Global, OTabWidget::Bottom ); | 58 | TabWidget3 = new OTabWidget ( this, "tabwidget", OTabWidget::Global, OTabWidget::Bottom ); |
59 | layout->addWidget( TabWidget3 ); | 59 | layout->addWidget( TabWidget3 ); |
60 | 60 | ||
61 | tab_2 = new QWidget( TabWidget3, "tab_2" ); | 61 | tab_2 = new QWidget( TabWidget3, "tab_2" ); |
62 | QVBoxLayout *tab2Layout = new QVBoxLayout( tab_2, 4 ,4 ); | 62 | QVBoxLayout *tab2Layout = new QVBoxLayout( tab_2, 4 ,4 ); |
63 | QLabel *l = new QLabel( tr( "Load which plugins in what order:" ), tab_2 ); | 63 | QLabel *l = new QLabel( tr( "Load which plugins in what order:" ), tab_2 ); |
64 | tab2Layout->addWidget( l ); | 64 | tab2Layout->addWidget( l ); |
65 | QHBox *hbox1 = new QHBox( tab_2 ); | 65 | QHBox *hbox1 = new QHBox( tab_2 ); |
66 | m_appletListView = new QListView( hbox1 ); | 66 | m_appletListView = new QListView( hbox1 ); |
67 | m_appletListView->addColumn( "PluginList" ); | 67 | m_appletListView->addColumn( "PluginList" ); |
68 | m_appletListView->header()->hide(); | 68 | m_appletListView->header()->hide(); |
69 | m_appletListView->setSorting( -1 ); | 69 | m_appletListView->setSorting( -1 ); |
70 | QWhatsThis::add( m_appletListView, tr( "Check a checkbox to activate/deactivate a plugin or use the arrow buttons on the right to change the appearance order" ) ); | 70 | QWhatsThis::add( m_appletListView, tr( "Check a checkbox to activate/deactivate a plugin or use the arrow buttons on the right to change the appearance order" ) ); |
71 | QVBox *vbox1 = new QVBox( hbox1 ); | 71 | QVBox *vbox1 = new QVBox( hbox1 ); |
72 | new ToolButton( vbox1, tr( "Move Up" ), "up", this , SLOT( moveSelectedUp() ) ); | 72 | new ToolButton( vbox1, tr( "Move Up" ), "up", this , SLOT( moveSelectedUp() ) ); |
73 | new ToolButton( vbox1, tr( "Move Down" ), "down", this , SLOT( moveSelectedDown() ) ); | 73 | new ToolButton( vbox1, tr( "Move Down" ), "down", this , SLOT( moveSelectedDown() ) ); |
74 | tab2Layout->addWidget( hbox1 ); | 74 | tab2Layout->addWidget( hbox1 ); |
75 | TabWidget3->addTab( tab_2, "pass", tr( "active/order" ) ); | 75 | TabWidget3->addTab( tab_2, "pass", tr( "active/order" ) ); |
76 | 76 | ||
77 | // Misc tab | 77 | // Misc tab |
78 | tab_3 = new QWidget( TabWidget3, "tab_3" ); | 78 | tab_3 = new QWidget( TabWidget3, "tab_3" ); |
79 | QVBoxLayout *tab3Layout = new QVBoxLayout( tab_3 ); | 79 | QVBoxLayout *tab3Layout = new QVBoxLayout( tab_3 ); |
80 | 80 | ||
81 | m_guiMisc = new TodayConfigMiscBase( tab_3 ); | 81 | m_guiMisc = new TodayConfigMiscBase( tab_3 ); |
82 | 82 | ||
83 | tab3Layout->addWidget( m_guiMisc ); | 83 | tab3Layout->addWidget( m_guiMisc ); |
84 | TabWidget3->addTab( tab_3, "SettingsIcon", tr( "Misc" ) ); | 84 | TabWidget3->addTab( tab_3, "SettingsIcon", tr( "Misc" ) ); |
85 | 85 | ||
86 | m_applets_changed = false; | 86 | m_applets_changed = false; |
87 | 87 | ||
88 | connect ( m_appletListView , SIGNAL( clicked ( QListViewItem * ) ), this, SLOT( appletChanged ( ) ) ); | 88 | connect ( m_appletListView , SIGNAL( clicked(QListViewItem*) ), this, SLOT( appletChanged() ) ); |
89 | 89 | ||
90 | readConfig(); | 90 | readConfig(); |
91 | QPEApplication::showDialog( this ); | 91 | QPEApplication::showDialog( this ); |
92 | } | 92 | } |
93 | 93 | ||
94 | 94 | ||
95 | /** | 95 | /** |
96 | * Autostart, uses the new (opie only) autostart method in the launcher code. | 96 | * Autostart, uses the new (opie only) autostart method in the launcher code. |
97 | * If registered against that today ist started on each resume. | 97 | * If registered against that today ist started on each resume. |
98 | */ | 98 | */ |
99 | void TodayConfig::setAutoStart() { | 99 | void TodayConfig::setAutoStart() { |
100 | Config cfg( "today" ); | 100 | Config cfg( "today" ); |
101 | cfg.setGroup( "Autostart" ); | 101 | cfg.setGroup( "Autostart" ); |
102 | if ( m_autoStart ) { | 102 | if ( m_autoStart ) { |
103 | QCopEnvelope e( "QPE/System", "autoStart(QString,QString,QString)" ); | 103 | QCopEnvelope e( "QPE/System", "autoStart(QString,QString,QString)" ); |
104 | e << QString( "add" ); | 104 | e << QString( "add" ); |
105 | e << QString( "today" ); | 105 | e << QString( "today" ); |
106 | e << QString( "%1" ).arg( m_autoStartTimer ); | 106 | e << QString( "%1" ).arg( m_autoStartTimer ); |
107 | } else { | 107 | } else { |
108 | QCopEnvelope e( "QPE/System", "autoStart(QString,QString)" ); | 108 | QCopEnvelope e( "QPE/System", "autoStart(QString,QString)" ); |
109 | e << QString( "remove" ); | 109 | e << QString( "remove" ); |
110 | e << QString( "today" ); | 110 | e << QString( "today" ); |
111 | } | 111 | } |
112 | } | 112 | } |
113 | 113 | ||
114 | /** | 114 | /** |
115 | * Read the config part | 115 | * Read the config part |
116 | */ | 116 | */ |
117 | void TodayConfig::readConfig() { | 117 | void TodayConfig::readConfig() { |
118 | Config cfg( "today" ); | 118 | Config cfg( "today" ); |
119 | cfg.setGroup( "Autostart" ); | 119 | cfg.setGroup( "Autostart" ); |
120 | m_autoStart = cfg.readNumEntry( "autostart", 1 ); | 120 | m_autoStart = cfg.readNumEntry( "autostart", 1 ); |
121 | m_guiMisc->CheckBoxAuto->setChecked( m_autoStart ); | 121 | m_guiMisc->CheckBoxAuto->setChecked( m_autoStart ); |
122 | m_autoStartTimer = cfg.readNumEntry( "autostartdelay", 0 ); | 122 | m_autoStartTimer = cfg.readNumEntry( "autostartdelay", 0 ); |
123 | m_guiMisc->SpinBoxTime->setValue( m_autoStartTimer ); | 123 | m_guiMisc->SpinBoxTime->setValue( m_autoStartTimer ); |
124 | 124 | ||
125 | cfg.setGroup( "General" ); | 125 | cfg.setGroup( "General" ); |
126 | m_iconSize = cfg.readNumEntry( "IconSize", 18 ); | 126 | m_iconSize = cfg.readNumEntry( "IconSize", 18 ); |
127 | m_guiMisc->SpinBoxIconSize->setValue( m_iconSize ); | 127 | m_guiMisc->SpinBoxIconSize->setValue( m_iconSize ); |
128 | m_guiMisc->SpinRefresh->setValue( cfg.readNumEntry( "checkinterval", 15000 ) / 1000 ); | 128 | m_guiMisc->SpinRefresh->setValue( cfg.readNumEntry( "checkinterval", 15000 ) / 1000 ); |
129 | m_guiMisc->CheckBoxHide->setChecked( cfg.readNumEntry( "HideBanner", 0 ) ); | 129 | m_guiMisc->CheckBoxHide->setChecked( cfg.readNumEntry( "HideBanner", 0 ) ); |
130 | 130 | ||
131 | 131 | ||
132 | cfg.setGroup( "Plugins" ); | 132 | cfg.setGroup( "Plugins" ); |
133 | m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' ); | 133 | m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' ); |
134 | } | 134 | } |
135 | 135 | ||
136 | /** | 136 | /** |
137 | * Write the config part | 137 | * Write the config part |
138 | */ | 138 | */ |
139 | void TodayConfig::writeConfig() { | 139 | void TodayConfig::writeConfig() { |
140 | Config cfg( "today" ); | 140 | Config cfg( "today" ); |
141 | cfg.setGroup( "Plugins" ); | 141 | cfg.setGroup( "Plugins" ); |
142 | if ( m_applets_changed ) { | 142 | if ( m_applets_changed ) { |
143 | QStringList exclude; | 143 | QStringList exclude; |
144 | QStringList include; | 144 | QStringList include; |
145 | QStringList all_applets; | 145 | QStringList all_applets; |
146 | 146 | ||
147 | QListViewItemIterator list_it( m_appletListView ); | 147 | QListViewItemIterator list_it( m_appletListView ); |
148 | 148 | ||
149 | // this makes sure the names get saved in the order selected | 149 | // this makes sure the names get saved in the order selected |
150 | for ( ; list_it.current(); ++list_it ) { | 150 | for ( ; list_it.current(); ++list_it ) { |
151 | QMap <QString, QCheckListItem *>::Iterator it; | 151 | QMap <QString, QCheckListItem *>::Iterator it; |
152 | for ( it = m_applets.begin(); it != m_applets. end (); ++it ) { | 152 | for ( it = m_applets.begin(); it != m_applets. end (); ++it ) { |
153 | if ( list_it.current() == (*it) && !(*it)-> isOn () ) { | 153 | if ( list_it.current() == (*it) && !(*it)-> isOn () ) { |
154 | exclude << it.key(); | 154 | exclude << it.key(); |
155 | } else if ( list_it.current() == (*it) && (*it)-> isOn () ){ | 155 | } else if ( list_it.current() == (*it) && (*it)-> isOn () ){ |
156 | include << it.key(); | 156 | include << it.key(); |
157 | } | 157 | } |
158 | if ( list_it.current() == (*it) ) { | 158 | if ( list_it.current() == (*it) ) { |
159 | all_applets << it.key(); | 159 | all_applets << it.key(); |
160 | } | 160 | } |
161 | } | 161 | } |
162 | } | 162 | } |
163 | cfg.writeEntry( "ExcludeApplets", exclude, ',' ); | 163 | cfg.writeEntry( "ExcludeApplets", exclude, ',' ); |
164 | cfg.writeEntry( "IncludeApplets", include, ',' ); | 164 | cfg.writeEntry( "IncludeApplets", include, ',' ); |
165 | cfg.writeEntry( "AllApplets", all_applets, ',' ); | 165 | cfg.writeEntry( "AllApplets", all_applets, ',' ); |
166 | } | 166 | } |
167 | 167 | ||
168 | cfg.setGroup( "Autostart" ); | 168 | cfg.setGroup( "Autostart" ); |
169 | m_autoStart = m_guiMisc->CheckBoxAuto->isChecked(); | 169 | m_autoStart = m_guiMisc->CheckBoxAuto->isChecked(); |
170 | cfg.writeEntry( "autostart", m_autoStart ); | 170 | cfg.writeEntry( "autostart", m_autoStart ); |
171 | m_autoStartTimer = m_guiMisc->SpinBoxTime->value(); | 171 | m_autoStartTimer = m_guiMisc->SpinBoxTime->value(); |
172 | cfg.writeEntry( "autostartdelay", m_autoStartTimer ); | 172 | cfg.writeEntry( "autostartdelay", m_autoStartTimer ); |
173 | m_iconSize = m_guiMisc->SpinBoxIconSize->value(); | 173 | m_iconSize = m_guiMisc->SpinBoxIconSize->value(); |
174 | 174 | ||
175 | cfg.setGroup( "General" ); | 175 | cfg.setGroup( "General" ); |
176 | cfg.writeEntry( "IconSize", m_iconSize ); | 176 | cfg.writeEntry( "IconSize", m_iconSize ); |
177 | cfg.writeEntry( "HideBanner", m_guiMisc->CheckBoxHide->isChecked() ); | 177 | cfg.writeEntry( "HideBanner", m_guiMisc->CheckBoxHide->isChecked() ); |
178 | cfg.writeEntry( "checkinterval", m_guiMisc->SpinRefresh->value()*1000 ); | 178 | cfg.writeEntry( "checkinterval", m_guiMisc->SpinRefresh->value()*1000 ); |
179 | 179 | ||
180 | // set autostart settings | 180 | // set autostart settings |
181 | setAutoStart(); | 181 | setAutoStart(); |
182 | } | 182 | } |
183 | 183 | ||
184 | 184 | ||
diff --git a/core/pim/todo/mainwindow.cpp b/core/pim/todo/mainwindow.cpp index b68aad2..a244e58 100644 --- a/core/pim/todo/mainwindow.cpp +++ b/core/pim/todo/mainwindow.cpp | |||
@@ -96,193 +96,193 @@ void MainWindow::initActions() { | |||
96 | m_edit->insertItem(QWidget::tr("New from template"), m_template, | 96 | m_edit->insertItem(QWidget::tr("New from template"), m_template, |
97 | -1, 0 ); | 97 | -1, 0 ); |
98 | 98 | ||
99 | QAction* a = new QAction( QWidget::tr("New Task" ), Resource::loadPixmap( "new" ), | 99 | QAction* a = new QAction( QWidget::tr("New Task" ), Resource::loadPixmap( "new" ), |
100 | QString::null, 0, this, 0 ); | 100 | QString::null, 0, this, 0 ); |
101 | connect(a, SIGNAL( activated() ), | 101 | connect(a, SIGNAL( activated() ), |
102 | this, SLOT( slotNew() ) ); | 102 | this, SLOT( slotNew() ) ); |
103 | a->setWhatsThis( QWidget::tr( "Click here to create a new task." ) ); | 103 | a->setWhatsThis( QWidget::tr( "Click here to create a new task." ) ); |
104 | a->addTo(m_tool ); | 104 | a->addTo(m_tool ); |
105 | a->addTo(m_edit ); | 105 | a->addTo(m_edit ); |
106 | 106 | ||
107 | a = new QAction( QWidget::tr("Edit Task"), Resource::loadIconSet( "edit" ), | 107 | a = new QAction( QWidget::tr("Edit Task"), Resource::loadIconSet( "edit" ), |
108 | QString::null, 0, this, 0 ); | 108 | QString::null, 0, this, 0 ); |
109 | connect(a, SIGNAL(activated() ), | 109 | connect(a, SIGNAL(activated() ), |
110 | this, SLOT( slotEdit() ) ); | 110 | this, SLOT( slotEdit() ) ); |
111 | a->setWhatsThis( QWidget::tr( "Click here to modify the current task." ) ); | 111 | a->setWhatsThis( QWidget::tr( "Click here to modify the current task." ) ); |
112 | a->addTo( m_tool ); | 112 | a->addTo( m_tool ); |
113 | a->addTo( m_edit ); | 113 | a->addTo( m_edit ); |
114 | m_editAction = a; | 114 | m_editAction = a; |
115 | 115 | ||
116 | a = new QAction( QString::null, QWidget::tr("View Task"), 0, this, 0 ); | 116 | a = new QAction( QString::null, QWidget::tr("View Task"), 0, this, 0 ); |
117 | connect(a, SIGNAL( activated() ), | 117 | connect(a, SIGNAL( activated() ), |
118 | this, SLOT( slotShowDetails() ) ); | 118 | this, SLOT( slotShowDetails() ) ); |
119 | a->addTo( m_edit ); | 119 | a->addTo( m_edit ); |
120 | 120 | ||
121 | m_edit->insertSeparator(); | 121 | m_edit->insertSeparator(); |
122 | 122 | ||
123 | a = new QAction( QWidget::tr("Delete..."), Resource::loadIconSet( "trash" ), | 123 | a = new QAction( QWidget::tr("Delete..."), Resource::loadIconSet( "trash" ), |
124 | QString::null, 0, this, 0 ); | 124 | QString::null, 0, this, 0 ); |
125 | connect(a, SIGNAL(activated() ), | 125 | connect(a, SIGNAL(activated() ), |
126 | this, SLOT(slotDelete() ) ); | 126 | this, SLOT(slotDelete() ) ); |
127 | a->setWhatsThis( QWidget::tr( "Click here to remove the current task." ) ); | 127 | a->setWhatsThis( QWidget::tr( "Click here to remove the current task." ) ); |
128 | a->addTo( m_tool ); | 128 | a->addTo( m_tool ); |
129 | a->addTo( m_edit ); | 129 | a->addTo( m_edit ); |
130 | m_deleteAction = a; | 130 | m_deleteAction = a; |
131 | 131 | ||
132 | a = new QAction( QString::null, QWidget::tr("Delete all..."), 0, this, 0 ); | 132 | a = new QAction( QString::null, QWidget::tr("Delete all..."), 0, this, 0 ); |
133 | connect(a, SIGNAL( activated() ), | 133 | connect(a, SIGNAL( activated() ), |
134 | this, SLOT( slotDeleteAll() ) ); | 134 | this, SLOT( slotDeleteAll() ) ); |
135 | a->addTo(m_edit ); | 135 | a->addTo(m_edit ); |
136 | m_deleteAllAction = a; | 136 | m_deleteAllAction = a; |
137 | 137 | ||
138 | a = new QAction( QString::null, QWidget::tr("Delete completed"), | 138 | a = new QAction( QString::null, QWidget::tr("Delete completed"), |
139 | 0, this, 0 ); | 139 | 0, this, 0 ); |
140 | connect(a, SIGNAL( activated() ), | 140 | connect(a, SIGNAL( activated() ), |
141 | this, SLOT( slotDeleteCompleted() ) ); | 141 | this, SLOT( slotDeleteCompleted() ) ); |
142 | a->addTo(m_edit ); | 142 | a->addTo(m_edit ); |
143 | a->setEnabled( TRUE ); | 143 | a->setEnabled( TRUE ); |
144 | m_deleteCompleteAction = a; | 144 | m_deleteCompleteAction = a; |
145 | 145 | ||
146 | m_edit->insertSeparator(); | 146 | m_edit->insertSeparator(); |
147 | 147 | ||
148 | a = new QAction( QString::null, QWidget::tr("Duplicate"), 0, this, 0 ); | 148 | a = new QAction( QString::null, QWidget::tr("Duplicate"), 0, this, 0 ); |
149 | connect(a, SIGNAL( activated() ), | 149 | connect(a, SIGNAL( activated() ), |
150 | this, SLOT( slotDuplicate() ) ); | 150 | this, SLOT( slotDuplicate() ) ); |
151 | a->addTo(m_edit ); | 151 | a->addTo(m_edit ); |
152 | m_duplicateAction = a; | 152 | m_duplicateAction = a; |
153 | 153 | ||
154 | m_edit->insertSeparator(); | 154 | m_edit->insertSeparator(); |
155 | 155 | ||
156 | if ( Ir::supported() ) { | 156 | if ( Ir::supported() ) { |
157 | a = new QAction( QWidget::tr( "Beam" ), Resource::loadPixmap( "beam" ), QString::null, 0, this, 0 ); | 157 | a = new QAction( QWidget::tr( "Beam" ), Resource::loadPixmap( "beam" ), QString::null, 0, this, 0 ); |
158 | connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); | 158 | connect( a, SIGNAL( activated() ), this, SLOT( slotBeam() ) ); |
159 | a->setWhatsThis( QWidget::tr( "Click here to send the current task to another device." ) ); | 159 | a->setWhatsThis( QWidget::tr( "Click here to send the current task to another device." ) ); |
160 | a->addTo( m_edit ); | 160 | a->addTo( m_edit ); |
161 | a->addTo( m_tool ); | 161 | a->addTo( m_tool ); |
162 | } | 162 | } |
163 | 163 | ||
164 | #if 0 | 164 | #if 0 |
165 | // Options menu | 165 | // Options menu |
166 | a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ), | 166 | a = new QAction( QWidget::tr("Find"), Resource::loadIconSet( "mag" ), |
167 | QString::null, 0, this, 0 ); | 167 | QString::null, 0, this, 0 ); |
168 | connect(a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); | 168 | connect(a, SIGNAL( activated() ), this, SLOT( slotFind() ) ); |
169 | a->addTo( m_options ); | 169 | a->addTo( m_options ); |
170 | m_findAction = a; | 170 | m_findAction = a; |
171 | 171 | ||
172 | 172 | ||
173 | m_options->insertSeparator(); | 173 | m_options->insertSeparator(); |
174 | #endif | 174 | #endif |
175 | 175 | ||
176 | m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"), | 176 | m_completedAction = new QAction( QString::null, QWidget::tr("Show completed tasks"), |
177 | 0, this, 0, TRUE ); | 177 | 0, this, 0, TRUE ); |
178 | m_completedAction->addTo( m_options ); | 178 | m_completedAction->addTo( m_options ); |
179 | m_completedAction->setOn( showCompleted() ); | 179 | m_completedAction->setOn( showCompleted() ); |
180 | connect(m_completedAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowCompleted(bool) ) ); | 180 | connect(m_completedAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowCompleted(bool) ) ); |
181 | 181 | ||
182 | a = new QAction( QString::null, QWidget::tr("Show only over-due tasks"), | 182 | a = new QAction( QString::null, QWidget::tr("Show only over-due tasks"), |
183 | 0, this, 0, TRUE ); | 183 | 0, this, 0, TRUE ); |
184 | a->addTo( m_options ); | 184 | a->addTo( m_options ); |
185 | a->setOn( showOverDue() ); | 185 | a->setOn( showOverDue() ); |
186 | connect(a, SIGNAL(toggled(bool)), this, SLOT(slotShowDue(bool) ) ); | 186 | connect(a, SIGNAL(toggled(bool)), this, SLOT(slotShowDue(bool) ) ); |
187 | 187 | ||
188 | m_showDeadLineAction = new QAction( QString::null, QWidget::tr("Show task deadlines"), | 188 | m_showDeadLineAction = new QAction( QString::null, QWidget::tr("Show task deadlines"), |
189 | 0, this, 0, TRUE ); | 189 | 0, this, 0, TRUE ); |
190 | m_showDeadLineAction->addTo( m_options ); | 190 | m_showDeadLineAction->addTo( m_options ); |
191 | m_showDeadLineAction->setOn( showDeadline() ); | 191 | m_showDeadLineAction->setOn( showDeadline() ); |
192 | connect(m_showDeadLineAction, SIGNAL(toggled(bool) ), this, SLOT( slotShowDeadLine( bool ) ) ); | 192 | connect(m_showDeadLineAction, SIGNAL(toggled(bool) ), this, SLOT( slotShowDeadLine(bool) ) ); |
193 | 193 | ||
194 | m_showQuickTaskAction = new QAction( QString::null, QWidget::tr("Show quick task bar"), | 194 | m_showQuickTaskAction = new QAction( QString::null, QWidget::tr("Show quick task bar"), |
195 | 0, this, 0, TRUE ); | 195 | 0, this, 0, TRUE ); |
196 | m_showQuickTaskAction->addTo( m_options ); | 196 | m_showQuickTaskAction->addTo( m_options ); |
197 | m_showQuickTaskAction->setOn( showQuickTask() ); | 197 | m_showQuickTaskAction->setOn( showQuickTask() ); |
198 | connect(m_showQuickTaskAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowQuickTask(bool) ) ); | 198 | connect(m_showQuickTaskAction, SIGNAL( toggled(bool) ), this, SLOT(slotShowQuickTask(bool) ) ); |
199 | 199 | ||
200 | m_options->insertSeparator(); | 200 | m_options->insertSeparator(); |
201 | 201 | ||
202 | m_bar->insertItem( QWidget::tr("Data") ,m_edit ); | 202 | m_bar->insertItem( QWidget::tr("Data") ,m_edit ); |
203 | m_bar->insertItem( QWidget::tr("Category"), m_catMenu ); | 203 | m_bar->insertItem( QWidget::tr("Category"), m_catMenu ); |
204 | m_bar->insertItem( QWidget::tr("Options"), m_options ); | 204 | m_bar->insertItem( QWidget::tr("Options"), m_options ); |
205 | 205 | ||
206 | m_curQuick = new QuickEditImpl( this, m_quicktask ); | 206 | m_curQuick = new QuickEditImpl( this, m_quicktask ); |
207 | addToolBar( (QToolBar *)m_curQuick->widget(), QWidget::tr( "QuickEdit" ), QMainWindow::Top, TRUE ); | 207 | addToolBar( (QToolBar *)m_curQuick->widget(), QWidget::tr( "QuickEdit" ), QMainWindow::Top, TRUE ); |
208 | m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); | 208 | m_curQuick->signal()->connect( this, SLOT(slotQuickEntered() ) ); |
209 | 209 | ||
210 | } | 210 | } |
211 | /* m_curCat from Config */ | 211 | /* m_curCat from Config */ |
212 | void MainWindow::initConfig() { | 212 | void MainWindow::initConfig() { |
213 | Config config( "todo" ); | 213 | Config config( "todo" ); |
214 | config.setGroup( "View" ); | 214 | config.setGroup( "View" ); |
215 | m_completed = config.readBoolEntry( "ShowComplete", TRUE ); | 215 | m_completed = config.readBoolEntry( "ShowComplete", TRUE ); |
216 | m_curCat = config.readEntry( "Category", QString::null ); | 216 | m_curCat = config.readEntry( "Category", QString::null ); |
217 | m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); | 217 | m_deadline = config.readBoolEntry( "ShowDeadLine", TRUE); |
218 | m_overdue = config.readBoolEntry("ShowOverDue", FALSE ); | 218 | m_overdue = config.readBoolEntry("ShowOverDue", FALSE ); |
219 | m_quicktask = config.readBoolEntry("ShowQuickTask", TRUE); | 219 | m_quicktask = config.readBoolEntry("ShowQuickTask", TRUE); |
220 | } | 220 | } |
221 | void MainWindow::initUI() { | 221 | void MainWindow::initUI() { |
222 | 222 | ||
223 | m_stack = new OWidgetStack(this, "main stack"); | 223 | m_stack = new OWidgetStack(this, "main stack"); |
224 | 224 | ||
225 | setCentralWidget( m_stack ); | 225 | setCentralWidget( m_stack ); |
226 | 226 | ||
227 | setToolBarsMovable( FALSE ); | 227 | setToolBarsMovable( FALSE ); |
228 | 228 | ||
229 | QToolBar *menubarholder = new QToolBar( this ); | 229 | QToolBar *menubarholder = new QToolBar( this ); |
230 | menubarholder->setHorizontalStretchable( TRUE ); | 230 | menubarholder->setHorizontalStretchable( TRUE ); |
231 | m_bar = new QMenuBar( menubarholder ); | 231 | m_bar = new QMenuBar( menubarholder ); |
232 | 232 | ||
233 | m_tool = new QToolBar( this ); | 233 | m_tool = new QToolBar( this ); |
234 | 234 | ||
235 | /** QPopupMenu */ | 235 | /** QPopupMenu */ |
236 | m_edit = new QPopupMenu( this ); | 236 | m_edit = new QPopupMenu( this ); |
237 | m_options = new QPopupMenu( this ); | 237 | m_options = new QPopupMenu( this ); |
238 | m_catMenu = new QPopupMenu( this ); | 238 | m_catMenu = new QPopupMenu( this ); |
239 | m_template = new QPopupMenu( this ); | 239 | m_template = new QPopupMenu( this ); |
240 | 240 | ||
241 | m_catMenu->setCheckable( TRUE ); | 241 | m_catMenu->setCheckable( TRUE ); |
242 | m_template->setCheckable( TRUE ); | 242 | m_template->setCheckable( TRUE ); |
243 | 243 | ||
244 | connect(m_catMenu, SIGNAL(activated(int) ), | 244 | connect(m_catMenu, SIGNAL(activated(int) ), |
245 | this, SLOT(setCategory(int) ) ); | 245 | this, SLOT(setCategory(int) ) ); |
246 | connect(m_template, SIGNAL(activated(int) ), | 246 | connect(m_template, SIGNAL(activated(int) ), |
247 | this, SLOT(slotNewFromTemplate(int) ) ); | 247 | this, SLOT(slotNewFromTemplate(int) ) ); |
248 | } | 248 | } |
249 | void MainWindow::initViews() { | 249 | void MainWindow::initViews() { |
250 | 250 | ||
251 | TableView* tableView = new TableView( this, m_stack ); | 251 | TableView* tableView = new TableView( this, m_stack ); |
252 | QWhatsThis::add( tableView, QWidget::tr( "This is a listing of all current tasks.\n\nThe list displays the following information:\n1. Completed - A green checkmark indicates task is completed. Click here to complete a task.\n2. Priority - a graphical representation of task priority. Double-click here to modify.\n3. Description - description of task. Click here to select the task.\n4. Deadline - shows when task is due. This column can be shown or hidden by selecting Options->'Show task deadlines' from the menu above." ) ); | 252 | QWhatsThis::add( tableView, QWidget::tr( "This is a listing of all current tasks.\n\nThe list displays the following information:\n1. Completed - A green checkmark indicates task is completed. Click here to complete a task.\n2. Priority - a graphical representation of task priority. Double-click here to modify.\n3. Description - description of task. Click here to select the task.\n4. Deadline - shows when task is due. This column can be shown or hidden by selecting Options->'Show task deadlines' from the menu above." ) ); |
253 | m_stack->addWidget( tableView, m_counter++ ); | 253 | m_stack->addWidget( tableView, m_counter++ ); |
254 | m_views.append( tableView ); | 254 | m_views.append( tableView ); |
255 | m_curView = tableView; | 255 | m_curView = tableView; |
256 | connectBase( tableView ); | 256 | connectBase( tableView ); |
257 | /* add QString type + QString configname to | 257 | /* add QString type + QString configname to |
258 | * the View menu | 258 | * the View menu |
259 | * and subdirs for multiple views | 259 | * and subdirs for multiple views |
260 | */ | 260 | */ |
261 | } | 261 | } |
262 | void MainWindow::initEditor() { | 262 | void MainWindow::initEditor() { |
263 | m_curEdit = new Editor(); | 263 | m_curEdit = new Editor(); |
264 | } | 264 | } |
265 | void MainWindow::initShow() { | 265 | void MainWindow::initShow() { |
266 | m_curShow = new TextViewShow(this, this); | 266 | m_curShow = new TextViewShow(this, this); |
267 | m_stack->addWidget( m_curShow->widget() , m_counter++ ); | 267 | m_stack->addWidget( m_curShow->widget() , m_counter++ ); |
268 | } | 268 | } |
269 | MainWindow::~MainWindow() { | 269 | MainWindow::~MainWindow() { |
270 | delete templateManager(); | 270 | delete templateManager(); |
271 | } | 271 | } |
272 | void MainWindow::connectBase( ViewBase* ) { | 272 | void MainWindow::connectBase( ViewBase* ) { |
273 | // once templates and signals mix we'll use it again | 273 | // once templates and signals mix we'll use it again |
274 | } | 274 | } |
275 | QPopupMenu* MainWindow::contextMenu( int , bool recur ) { | 275 | QPopupMenu* MainWindow::contextMenu( int , bool recur ) { |
276 | QPopupMenu* menu = new QPopupMenu(); | 276 | QPopupMenu* menu = new QPopupMenu(); |
277 | 277 | ||
278 | m_editAction->addTo( menu ); | 278 | m_editAction->addTo( menu ); |
279 | m_deleteAction->addTo( menu ); | 279 | m_deleteAction->addTo( menu ); |
280 | m_duplicateAction->addTo( menu ); | 280 | m_duplicateAction->addTo( menu ); |
281 | 281 | ||
282 | menu->insertSeparator(); | 282 | menu->insertSeparator(); |
283 | 283 | ||
284 | /* | 284 | /* |
285 | * if this event recurs we allow | 285 | * if this event recurs we allow |
286 | * to detach it. | 286 | * to detach it. |
287 | * remove all | 287 | * remove all |
288 | */ | 288 | */ |
diff --git a/core/pim/todo/otaskeditor.cpp b/core/pim/todo/otaskeditor.cpp index ab1ce94..d1e50f7 100644 --- a/core/pim/todo/otaskeditor.cpp +++ b/core/pim/todo/otaskeditor.cpp | |||
@@ -1,90 +1,90 @@ | |||
1 | #include <qlayout.h> | 1 | #include <qlayout.h> |
2 | 2 | ||
3 | #include "taskeditoroverview.h" | 3 | #include "taskeditoroverview.h" |
4 | #include "taskeditorstatus.h" | 4 | #include "taskeditorstatus.h" |
5 | #include "taskeditoralarms.h" | 5 | #include "taskeditoralarms.h" |
6 | 6 | ||
7 | #include "otaskeditor.h" | 7 | #include "otaskeditor.h" |
8 | 8 | ||
9 | OTaskEditor::OTaskEditor(int cur) | 9 | OTaskEditor::OTaskEditor(int cur) |
10 | : QDialog( 0, 0, TRUE, WStyle_ContextHelp ) { | 10 | : QDialog( 0, 0, TRUE, WStyle_ContextHelp ) { |
11 | init(); | 11 | init(); |
12 | init( cur ); | 12 | init( cur ); |
13 | } | 13 | } |
14 | OTaskEditor::OTaskEditor( const OPimTodo& to) | 14 | OTaskEditor::OTaskEditor( const OPimTodo& to) |
15 | : QDialog( 0, 0, TRUE, WStyle_ContextHelp ) { | 15 | : QDialog( 0, 0, TRUE, WStyle_ContextHelp ) { |
16 | init(); | 16 | init(); |
17 | init( to ); | 17 | init( to ); |
18 | } | 18 | } |
19 | OTaskEditor::~OTaskEditor() { | 19 | OTaskEditor::~OTaskEditor() { |
20 | 20 | ||
21 | } | 21 | } |
22 | void OTaskEditor::init( int cur ) { | 22 | void OTaskEditor::init( int cur ) { |
23 | OPimTodo to; | 23 | OPimTodo to; |
24 | to.setUid( 1 ); // generate a new uid | 24 | to.setUid( 1 ); // generate a new uid |
25 | if ( cur != 0 ) | 25 | if ( cur != 0 ) |
26 | to.setCategories( cur ); | 26 | to.setCategories( cur ); |
27 | load(to); | 27 | load(to); |
28 | } | 28 | } |
29 | void OTaskEditor::init( const OPimTodo& to ) { | 29 | void OTaskEditor::init( const OPimTodo& to ) { |
30 | load( to ); | 30 | load( to ); |
31 | } | 31 | } |
32 | OPimTodo OTaskEditor::todo()const{ | 32 | OPimTodo OTaskEditor::todo()const{ |
33 | qWarning("saving!"); | 33 | qWarning("saving!"); |
34 | OPimTodo to ( m_todo ); | 34 | OPimTodo to ( m_todo ); |
35 | m_overView->save( to ); | 35 | m_overView->save( to ); |
36 | m_stat->save( to ); | 36 | m_stat->save( to ); |
37 | to.setRecurrence( m_rec->recurrence() ); | 37 | to.setRecurrence( m_rec->recurrence() ); |
38 | m_alarm->save( to ); | 38 | m_alarm->save( to ); |
39 | 39 | ||
40 | return to; | 40 | return to; |
41 | } | 41 | } |
42 | void OTaskEditor::load(const OPimTodo& to) { | 42 | void OTaskEditor::load(const OPimTodo& to) { |
43 | m_overView->load( to ); | 43 | m_overView->load( to ); |
44 | m_stat->load( to ); | 44 | m_stat->load( to ); |
45 | m_rec->setRecurrence( to.recurrence(), to.hasDueDate() ? to.dueDate() : QDate::currentDate() ); | 45 | m_rec->setRecurrence( to.recurrence(), to.hasDueDate() ? to.dueDate() : QDate::currentDate() ); |
46 | m_alarm->load( to ); | 46 | m_alarm->load( to ); |
47 | 47 | ||
48 | m_todo = to; | 48 | m_todo = to; |
49 | } | 49 | } |
50 | void OTaskEditor::init() { | 50 | void OTaskEditor::init() { |
51 | setCaption(tr("Task Editor") ); | 51 | setCaption(tr("Task Editor") ); |
52 | 52 | ||
53 | QVBoxLayout* layo = new QVBoxLayout( this ); | 53 | QVBoxLayout* layo = new QVBoxLayout( this ); |
54 | m_tab = new OTabWidget( this ); | 54 | m_tab = new OTabWidget( this ); |
55 | layo->addWidget( m_tab ); | 55 | layo->addWidget( m_tab ); |
56 | 56 | ||
57 | /* | 57 | /* |
58 | * Add the Widgets | 58 | * Add the Widgets |
59 | */ | 59 | */ |
60 | m_overView = new TaskEditorOverView( m_tab ); | 60 | m_overView = new TaskEditorOverView( m_tab ); |
61 | m_tab->addTab( m_overView, "todo/info", tr("Information") ); | 61 | m_tab->addTab( m_overView, "todo/info", tr("Information") ); |
62 | 62 | ||
63 | m_stat = new TaskEditorStatus( m_tab ); | 63 | m_stat = new TaskEditorStatus( m_tab ); |
64 | m_tab->addTab( m_stat, "todo/TodoList", tr("Status") ); | 64 | m_tab->addTab( m_stat, "todo/TodoList", tr("Status") ); |
65 | 65 | ||
66 | m_alarm = new TaskEditorAlarms( m_tab ); | 66 | m_alarm = new TaskEditorAlarms( m_tab ); |
67 | m_tab->addTab( m_alarm, "todo/alarm", tr("Alarms") ); | 67 | m_tab->addTab( m_alarm, "todo/alarm", tr("Alarms") ); |
68 | 68 | ||
69 | // m_remind = new TaskEditorAlarms( m_tab ); | 69 | // m_remind = new TaskEditorAlarms( m_tab ); |
70 | // m_tab->addTab( m_remind, "todo/reminder", tr("Reminders") ); | 70 | // m_tab->addTab( m_remind, "todo/reminder", tr("Reminders") ); |
71 | 71 | ||
72 | // QLabel* lbl = new QLabel( m_tab ); | 72 | // QLabel* lbl = new QLabel( m_tab ); |
73 | // lbl->setText( tr("X-Ref") ); | 73 | // lbl->setText( tr("X-Ref") ); |
74 | // m_tab->addTab( lbl, "todo/xref", tr("X-Ref") ); | 74 | // m_tab->addTab( lbl, "todo/xref", tr("X-Ref") ); |
75 | 75 | ||
76 | m_rec = new OPimRecurrenceWidget( true, QDate::currentDate(), this ); | 76 | m_rec = new OPimRecurrenceWidget( true, QDate::currentDate(), this ); |
77 | m_tab->addTab( m_rec, "repeat", tr("Recurrence") ); | 77 | m_tab->addTab( m_rec, "repeat", tr("Recurrence") ); |
78 | 78 | ||
79 | 79 | ||
80 | /* signal and slots */ | 80 | /* signal and slots */ |
81 | connect(m_overView, SIGNAL(recurranceEnabled(bool) ), | 81 | connect(m_overView, SIGNAL(recurranceEnabled(bool) ), |
82 | m_rec, SLOT(setEnabled(bool) ) ); | 82 | m_rec, SLOT(setEnabled(bool) ) ); |
83 | 83 | ||
84 | /* connect due date changed to the recurrence tab */ | 84 | /* connect due date changed to the recurrence tab */ |
85 | connect(m_stat, SIGNAL(dueDateChanged(const QDate&) ), | 85 | connect(m_stat, SIGNAL(dueDateChanged(const QDate&) ), |
86 | m_rec, SLOT(setStartDate(const QDate& ) ) ); | 86 | m_rec, SLOT(setStartDate(const QDate&) ) ); |
87 | 87 | ||
88 | 88 | ||
89 | m_tab->setCurrentTab( m_overView ); | 89 | m_tab->setCurrentTab( m_overView ); |
90 | } | 90 | } |
diff --git a/core/pim/todo/tableview.cpp b/core/pim/todo/tableview.cpp index 5bbf880..0d298f4 100644 --- a/core/pim/todo/tableview.cpp +++ b/core/pim/todo/tableview.cpp | |||
@@ -23,200 +23,200 @@ | |||
23 | If not, write to the Free Software Foundation, | 23 | If not, write to the Free Software Foundation, |
24 | Inc., 59 Temple Place - Suite 330, | 24 | Inc., 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | #include <stdlib.h> | 28 | #include <stdlib.h> |
29 | #include <cmath> | 29 | #include <cmath> |
30 | #include <cctype> | 30 | #include <cctype> |
31 | 31 | ||
32 | #include <qcombobox.h> | 32 | #include <qcombobox.h> |
33 | #include <qlineedit.h> | 33 | #include <qlineedit.h> |
34 | #include <qtimer.h> | 34 | #include <qtimer.h> |
35 | #include <qpopupmenu.h> | 35 | #include <qpopupmenu.h> |
36 | 36 | ||
37 | #include <qpe/config.h> | 37 | #include <qpe/config.h> |
38 | #include <qpe/resource.h> | 38 | #include <qpe/resource.h> |
39 | 39 | ||
40 | #include <opie2/opimrecurrence.h> | 40 | #include <opie2/opimrecurrence.h> |
41 | 41 | ||
42 | #include "mainwindow.h" | 42 | #include "mainwindow.h" |
43 | //#include "tableitems.h" | 43 | //#include "tableitems.h" |
44 | #include "tableview.h" | 44 | #include "tableview.h" |
45 | 45 | ||
46 | using namespace Todo; | 46 | using namespace Todo; |
47 | 47 | ||
48 | namespace { | 48 | namespace { |
49 | static const int BoxSize = 14; | 49 | static const int BoxSize = 14; |
50 | static const int RowHeight = 20; | 50 | static const int RowHeight = 20; |
51 | } | 51 | } |
52 | 52 | ||
53 | TableView::EditorWidget::EditorWidget() : m_wid(0l), m_row(-1), m_col(-1) { | 53 | TableView::EditorWidget::EditorWidget() : m_wid(0l), m_row(-1), m_col(-1) { |
54 | } | 54 | } |
55 | void TableView::EditorWidget::setCellWidget(QWidget* wid, int row, int col ) { | 55 | void TableView::EditorWidget::setCellWidget(QWidget* wid, int row, int col ) { |
56 | m_wid = wid; | 56 | m_wid = wid; |
57 | m_row = row; | 57 | m_row = row; |
58 | m_col = col; | 58 | m_col = col; |
59 | } | 59 | } |
60 | void TableView::EditorWidget::releaseCellWidget() { | 60 | void TableView::EditorWidget::releaseCellWidget() { |
61 | m_wid = 0; | 61 | m_wid = 0; |
62 | m_row = m_col = -1; | 62 | m_row = m_col = -1; |
63 | } | 63 | } |
64 | QWidget* TableView::EditorWidget::cellWidget()const { | 64 | QWidget* TableView::EditorWidget::cellWidget()const { |
65 | return m_wid; | 65 | return m_wid; |
66 | } | 66 | } |
67 | int TableView::EditorWidget::cellRow()const { | 67 | int TableView::EditorWidget::cellRow()const { |
68 | return m_row; | 68 | return m_row; |
69 | } | 69 | } |
70 | int TableView::EditorWidget::cellCol()const { | 70 | int TableView::EditorWidget::cellCol()const { |
71 | return m_col; | 71 | return m_col; |
72 | } | 72 | } |
73 | 73 | ||
74 | 74 | ||
75 | void TableView::initConfig() { | 75 | void TableView::initConfig() { |
76 | Config config( "todo" ); | 76 | Config config( "todo" ); |
77 | config.setGroup( "Options" ); | 77 | config.setGroup( "Options" ); |
78 | m_completeStrokeWidth = config.readNumEntry( "CompleteStrokeWidth", 8 ); | 78 | m_completeStrokeWidth = config.readNumEntry( "CompleteStrokeWidth", 8 ); |
79 | for (int i = 0; i < numCols(); i++ ) { | 79 | for (int i = 0; i < numCols(); i++ ) { |
80 | int width = config.readNumEntry("Width"+QString::number(i), -1 ); | 80 | int width = config.readNumEntry("Width"+QString::number(i), -1 ); |
81 | setColumnWidth(i, width == -1 ? columnWidth(i) : width ); | 81 | setColumnWidth(i, width == -1 ? columnWidth(i) : width ); |
82 | } | 82 | } |
83 | } | 83 | } |
84 | 84 | ||
85 | TableView::TableView( MainWindow* window, QWidget* wid ) | 85 | TableView::TableView( MainWindow* window, QWidget* wid ) |
86 | : QTable( wid ), TodoView( window ) { | 86 | : QTable( wid ), TodoView( window ) { |
87 | 87 | ||
88 | setName("TableView"); | 88 | setName("TableView"); |
89 | // Load icons | 89 | // Load icons |
90 | // TODO - probably should be done globally somewhere else, | 90 | // TODO - probably should be done globally somewhere else, |
91 | // see also quickeditimpl.cpp/h, taskeditoroverview.cpp/h | 91 | // see also quickeditimpl.cpp/h, taskeditoroverview.cpp/h |
92 | m_pic_completed = Resource::loadPixmap( "todo/completed" ); | 92 | m_pic_completed = Resource::loadPixmap( "todo/completed" ); |
93 | QString namestr; | 93 | QString namestr; |
94 | for ( unsigned int i = 1; i < 6; i++ ) { | 94 | for ( unsigned int i = 1; i < 6; i++ ) { |
95 | namestr = "todo/priority"; | 95 | namestr = "todo/priority"; |
96 | namestr.append( QString::number( i ) ); | 96 | namestr.append( QString::number( i ) ); |
97 | m_pic_priority[ i - 1 ] = Resource::loadPixmap( namestr ); | 97 | m_pic_priority[ i - 1 ] = Resource::loadPixmap( namestr ); |
98 | } | 98 | } |
99 | 99 | ||
100 | setUpdatesEnabled( false ); | 100 | setUpdatesEnabled( false ); |
101 | viewport()->setUpdatesEnabled( false ); | 101 | viewport()->setUpdatesEnabled( false ); |
102 | m_enablePaint = false; | 102 | m_enablePaint = false; |
103 | setNumRows(0); | 103 | setNumRows(0); |
104 | setNumCols(4); | 104 | setNumCols(4); |
105 | 105 | ||
106 | horizontalHeader()->setLabel( 0, QWidget::tr("C.") ); | 106 | horizontalHeader()->setLabel( 0, QWidget::tr("C.") ); |
107 | horizontalHeader()->setLabel( 1, QWidget::tr("Priority") ); | 107 | horizontalHeader()->setLabel( 1, QWidget::tr("Priority") ); |
108 | horizontalHeader()->setLabel( 2, QWidget::tr("Summary" ) ); | 108 | horizontalHeader()->setLabel( 2, QWidget::tr("Summary" ) ); |
109 | horizontalHeader()->setLabel( 3, QWidget::tr("Deadline") ); | 109 | horizontalHeader()->setLabel( 3, QWidget::tr("Deadline") ); |
110 | 110 | ||
111 | setShowDeadline( todoWindow()->showDeadline() ); | 111 | setShowDeadline( todoWindow()->showDeadline() ); |
112 | 112 | ||
113 | setSorting( TRUE ); | 113 | setSorting( TRUE ); |
114 | setSelectionMode( NoSelection ); | 114 | setSelectionMode( NoSelection ); |
115 | 115 | ||
116 | setLeftMargin( 0 ); | 116 | setLeftMargin( 0 ); |
117 | verticalHeader()->hide(); | 117 | verticalHeader()->hide(); |
118 | 118 | ||
119 | connect((QTable*)this, SIGNAL( clicked( int, int, int, const QPoint& ) ), | 119 | connect((QTable*)this, SIGNAL( clicked(int,int,int,const QPoint&) ), |
120 | this, SLOT( slotClicked(int, int, int, const QPoint& ) ) ); | 120 | this, SLOT( slotClicked(int,int,int,const QPoint&) ) ); |
121 | connect((QTable*)this, SIGNAL( pressed( int, int, int, const QPoint& ) ), | 121 | connect((QTable*)this, SIGNAL( pressed(int,int,int,const QPoint&) ), |
122 | this, SLOT( slotPressed(int, int, int, const QPoint& ) ) ); | 122 | this, SLOT( slotPressed(int,int,int,const QPoint&) ) ); |
123 | connect((QTable*)this, SIGNAL(valueChanged(int, int) ), | 123 | connect((QTable*)this, SIGNAL(valueChanged(int,int) ), |
124 | this, SLOT( slotValueChanged(int, int) ) ); | 124 | this, SLOT( slotValueChanged(int,int) ) ); |
125 | connect((QTable*)this, SIGNAL(currentChanged(int, int) ), | 125 | connect((QTable*)this, SIGNAL(currentChanged(int,int) ), |
126 | this, SLOT( slotCurrentChanged(int, int) ) ); | 126 | this, SLOT( slotCurrentChanged(int,int) ) ); |
127 | 127 | ||
128 | m_menuTimer = new QTimer( this ); | 128 | m_menuTimer = new QTimer( this ); |
129 | connect( m_menuTimer, SIGNAL(timeout()), | 129 | connect( m_menuTimer, SIGNAL(timeout()), |
130 | this, SLOT(slotShowMenu()) ); | 130 | this, SLOT(slotShowMenu()) ); |
131 | 131 | ||
132 | /* now let's init the config */ | 132 | /* now let's init the config */ |
133 | initConfig(); | 133 | initConfig(); |
134 | 134 | ||
135 | 135 | ||
136 | m_enablePaint = true; | 136 | m_enablePaint = true; |
137 | setUpdatesEnabled( true ); | 137 | setUpdatesEnabled( true ); |
138 | viewport()->setUpdatesEnabled( true ); | 138 | viewport()->setUpdatesEnabled( true ); |
139 | viewport()->update(); | 139 | viewport()->update(); |
140 | setSortOrder( 0 ); | 140 | setSortOrder( 0 ); |
141 | setAscending( TRUE ); | 141 | setAscending( TRUE ); |
142 | m_first = true; | 142 | m_first = true; |
143 | 143 | ||
144 | 144 | ||
145 | } | 145 | } |
146 | /* a new day has started | 146 | /* a new day has started |
147 | * update the day | 147 | * update the day |
148 | */ | 148 | */ |
149 | void TableView::newDay() { | 149 | void TableView::newDay() { |
150 | clear(); | 150 | clear(); |
151 | updateView(); | 151 | updateView(); |
152 | } | 152 | } |
153 | TableView::~TableView() { | 153 | TableView::~TableView() { |
154 | Config config( "todo" ); | 154 | Config config( "todo" ); |
155 | config.setGroup( "Options" ); | 155 | config.setGroup( "Options" ); |
156 | for (int i = 0; i < numCols(); i++ ) | 156 | for (int i = 0; i < numCols(); i++ ) |
157 | config.writeEntry("Width"+QString::number(i), columnWidth(i) ); | 157 | config.writeEntry("Width"+QString::number(i), columnWidth(i) ); |
158 | } | 158 | } |
159 | void TableView::slotShowMenu() { | 159 | void TableView::slotShowMenu() { |
160 | QPopupMenu *menu = todoWindow()->contextMenu( current(), sorted()[currentRow()].recurrence().doesRecur() ); | 160 | QPopupMenu *menu = todoWindow()->contextMenu( current(), sorted()[currentRow()].recurrence().doesRecur() ); |
161 | menu->exec(QCursor::pos() ); | 161 | menu->exec(QCursor::pos() ); |
162 | delete menu; | 162 | delete menu; |
163 | } | 163 | } |
164 | QString TableView::type() const { | 164 | QString TableView::type() const { |
165 | return QString::fromLatin1( tr("Table View") ); | 165 | return QString::fromLatin1( tr("Table View") ); |
166 | } | 166 | } |
167 | int TableView::current() { | 167 | int TableView::current() { |
168 | if (numRows() == 0 ) return 0; | 168 | if (numRows() == 0 ) return 0; |
169 | int uid = sorted().uidAt(currentRow() ); | 169 | int uid = sorted().uidAt(currentRow() ); |
170 | 170 | ||
171 | return uid; | 171 | return uid; |
172 | } | 172 | } |
173 | int TableView::next() { | 173 | int TableView::next() { |
174 | if ( numRows() == 0 ) return 0; | 174 | if ( numRows() == 0 ) return 0; |
175 | if ( currentRow() + 1 >= numRows() ) return 0; | 175 | if ( currentRow() + 1 >= numRows() ) return 0; |
176 | setCurrentCell( currentRow() +1, currentColumn() ); | 176 | setCurrentCell( currentRow() +1, currentColumn() ); |
177 | return sorted().uidAt( currentRow() ); | 177 | return sorted().uidAt( currentRow() ); |
178 | } | 178 | } |
179 | int TableView::prev() { | 179 | int TableView::prev() { |
180 | if ( numRows() == 0 ) return 0; | 180 | if ( numRows() == 0 ) return 0; |
181 | if ( currentRow() - 1 < 0 ) return 0; | 181 | if ( currentRow() - 1 < 0 ) return 0; |
182 | setCurrentCell( currentRow() -1, currentColumn() ); | 182 | setCurrentCell( currentRow() -1, currentColumn() ); |
183 | return sorted().uidAt( currentRow() ); | 183 | return sorted().uidAt( currentRow() ); |
184 | 184 | ||
185 | } | 185 | } |
186 | QString TableView::currentRepresentation() { | 186 | QString TableView::currentRepresentation() { |
187 | OPimTodo to = sorted()[currentRow()]; | 187 | OPimTodo to = sorted()[currentRow()]; |
188 | return to.summary().isEmpty() ? to.description().left(20) : to.summary() ; | 188 | return to.summary().isEmpty() ? to.description().left(20) : to.summary() ; |
189 | } | 189 | } |
190 | /* show overdue */ | 190 | /* show overdue */ |
191 | void TableView::showOverDue( bool ) { | 191 | void TableView::showOverDue( bool ) { |
192 | clear(); | 192 | clear(); |
193 | updateView(); | 193 | updateView(); |
194 | } | 194 | } |
195 | 195 | ||
196 | void TableView::updateView( ) { | 196 | void TableView::updateView( ) { |
197 | qWarning("update view"); | 197 | qWarning("update view"); |
198 | m_row = false; | 198 | m_row = false; |
199 | static int id; | 199 | static int id; |
200 | id = startTimer(4000 ); | 200 | id = startTimer(4000 ); |
201 | /* FIXME we want one page to be read! | 201 | /* FIXME we want one page to be read! |
202 | * | 202 | * |
203 | * Calculate that screensize | 203 | * Calculate that screensize |
204 | */ | 204 | */ |
205 | todoWindow()->setReadAhead( 4 ); | 205 | todoWindow()->setReadAhead( 4 ); |
206 | sort(); | 206 | sort(); |
207 | OPimTodoAccess::List::Iterator it, end; | 207 | OPimTodoAccess::List::Iterator it, end; |
208 | it = sorted().begin(); | 208 | it = sorted().begin(); |
209 | end = sorted().end(); | 209 | end = sorted().end(); |
210 | 210 | ||
211 | qWarning("setTodos"); | 211 | qWarning("setTodos"); |
212 | QTime time; | 212 | QTime time; |
213 | time.start(); | 213 | time.start(); |
214 | m_enablePaint = false; | 214 | m_enablePaint = false; |
215 | setUpdatesEnabled( false ); | 215 | setUpdatesEnabled( false ); |
216 | viewport()->setUpdatesEnabled( false ); | 216 | viewport()->setUpdatesEnabled( false ); |
217 | 217 | ||
218 | setNumRows( it.count() ); | 218 | setNumRows( it.count() ); |
219 | if ( it.count() == 0 ) | 219 | if ( it.count() == 0 ) |
220 | killTimer(id); | 220 | killTimer(id); |
221 | 221 | ||
222 | // int elc = time.elapsed(); | 222 | // int elc = time.elapsed(); |
diff --git a/core/pim/todo/taskeditoralarms.cpp b/core/pim/todo/taskeditoralarms.cpp index 930c94e..a512fb0 100644 --- a/core/pim/todo/taskeditoralarms.cpp +++ b/core/pim/todo/taskeditoralarms.cpp | |||
@@ -1,179 +1,179 @@ | |||
1 | /* | 1 | /* |
2 | =. This file is part of the OPIE Project | 2 | =. This file is part of the OPIE Project |
3 | .=l. Copyright (c) 2002 <> | 3 | .=l. Copyright (c) 2002 <> |
4 | .>+-= | 4 | .>+-= |
5 | _;:, .> :=|. This program is free software; you can | 5 | _;:, .> :=|. This program is free software; you can |
6 | .> <`_, > . <= redistribute it and/or modify it under | 6 | .> <`_, > . <= redistribute it and/or modify it under |
7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This program is distributed in the hope that | 12 | .i_,=:_. -<s. This program is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
17 | ..}^=.= = ; Library General Public License for more | 17 | ..}^=.= = ; Library General Public License for more |
18 | ++= -. .` .: details. | 18 | ++= -. .` .: details. |
19 | : = ...= . :.=- | 19 | : = ...= . :.=- |
20 | -. .:....=;==+<; You should have received a copy of the GNU | 20 | -. .:....=;==+<; You should have received a copy of the GNU |
21 | -_. . . )=. = General Public License along with | 21 | -_. . . )=. = General Public License along with |
22 | -- :-=` this library; see the file COPYING.LIB. | 22 | -- :-=` this library; see the file COPYING.LIB. |
23 | If not, write to the Free Software Foundation, | 23 | If not, write to the Free Software Foundation, |
24 | Inc., 59 Temple Place - Suite 330, | 24 | Inc., 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "taskeditoralarms.h" | 29 | #include "taskeditoralarms.h" |
30 | 30 | ||
31 | #include <opie2/opimnotifymanager.h> | 31 | #include <opie2/opimnotifymanager.h> |
32 | #include <opie2/otimepicker.h> | 32 | #include <opie2/otimepicker.h> |
33 | 33 | ||
34 | #include <qpe/datebookmonth.h> | 34 | #include <qpe/datebookmonth.h> |
35 | #include <qpe/resource.h> | 35 | #include <qpe/resource.h> |
36 | 36 | ||
37 | #include <qlistview.h> | 37 | #include <qlistview.h> |
38 | #include <qlayout.h> | 38 | #include <qlayout.h> |
39 | 39 | ||
40 | 40 | ||
41 | class AlarmItem : public QListViewItem { | 41 | class AlarmItem : public QListViewItem { |
42 | public: | 42 | public: |
43 | AlarmItem( QListView*, const OPimAlarm& ); | 43 | AlarmItem( QListView*, const OPimAlarm& ); |
44 | ~AlarmItem(); | 44 | ~AlarmItem(); |
45 | 45 | ||
46 | OPimAlarm alarm()const; | 46 | OPimAlarm alarm()const; |
47 | void setAlarm( const OPimAlarm& ); | 47 | void setAlarm( const OPimAlarm& ); |
48 | private: | 48 | private: |
49 | QDateTime m_dt; | 49 | QDateTime m_dt; |
50 | int m_type; | 50 | int m_type; |
51 | }; | 51 | }; |
52 | AlarmItem::AlarmItem( QListView* view, const OPimAlarm& dt) | 52 | AlarmItem::AlarmItem( QListView* view, const OPimAlarm& dt) |
53 | : QListViewItem(view) { | 53 | : QListViewItem(view) { |
54 | setAlarm( dt ); | 54 | setAlarm( dt ); |
55 | } | 55 | } |
56 | void AlarmItem::setAlarm( const OPimAlarm& dt ) { | 56 | void AlarmItem::setAlarm( const OPimAlarm& dt ) { |
57 | m_dt = dt.dateTime(); | 57 | m_dt = dt.dateTime(); |
58 | m_type = dt.sound(); | 58 | m_type = dt.sound(); |
59 | setText( 0, TimeString::dateString( m_dt.date() ) ); | 59 | setText( 0, TimeString::dateString( m_dt.date() ) ); |
60 | setText( 1, TimeString::timeString( m_dt.time() ) ); | 60 | setText( 1, TimeString::timeString( m_dt.time() ) ); |
61 | setText( 2, m_type == 0 ? QObject::tr("silent") : QObject::tr("loud") ); | 61 | setText( 2, m_type == 0 ? QObject::tr("silent") : QObject::tr("loud") ); |
62 | } | 62 | } |
63 | AlarmItem::~AlarmItem() { | 63 | AlarmItem::~AlarmItem() { |
64 | } | 64 | } |
65 | OPimAlarm AlarmItem::alarm()const{ | 65 | OPimAlarm AlarmItem::alarm()const{ |
66 | OPimAlarm al( m_type, m_dt ); | 66 | OPimAlarm al( m_type, m_dt ); |
67 | 67 | ||
68 | return al; | 68 | return al; |
69 | } | 69 | } |
70 | 70 | ||
71 | TaskEditorAlarms::TaskEditorAlarms( QWidget* parent, int, const char* name, WFlags fl ) | 71 | TaskEditorAlarms::TaskEditorAlarms( QWidget* parent, int, const char* name, WFlags fl ) |
72 | : QWidget( parent, name, fl ) | 72 | : QWidget( parent, name, fl ) |
73 | { | 73 | { |
74 | m_date = m_type = m_time = 0; | 74 | m_date = m_type = m_time = 0; |
75 | QGridLayout *layout = new QGridLayout( this, 2, 2, 4, 4 ); | 75 | QGridLayout *layout = new QGridLayout( this, 2, 2, 4, 4 ); |
76 | 76 | ||
77 | lstAlarms = new QListView( this ); | 77 | lstAlarms = new QListView( this ); |
78 | lstAlarms->addColumn( tr("Date") ); | 78 | lstAlarms->addColumn( tr("Date") ); |
79 | lstAlarms->addColumn( tr("Time") ); | 79 | lstAlarms->addColumn( tr("Time") ); |
80 | lstAlarms->addColumn( tr("Type") ); | 80 | lstAlarms->addColumn( tr("Type") ); |
81 | 81 | ||
82 | connect( lstAlarms, SIGNAL(clicked ( QListViewItem *, const QPoint &, int ) ), | 82 | connect( lstAlarms, SIGNAL(clicked(QListViewItem*,const QPoint&,int) ), |
83 | this, SLOT(inlineEdit(QListViewItem*, const QPoint&, int ) ) ); | 83 | this, SLOT(inlineEdit(QListViewItem*,const QPoint&,int) ) ); |
84 | 84 | ||
85 | layout->addMultiCellWidget( lstAlarms, 0, 0, 0, 2 ); | 85 | layout->addMultiCellWidget( lstAlarms, 0, 0, 0, 2 ); |
86 | 86 | ||
87 | QPushButton *btn = new QPushButton( Resource::loadPixmap( "new" ), tr( "New" ), this ); | 87 | QPushButton *btn = new QPushButton( Resource::loadPixmap( "new" ), tr( "New" ), this ); |
88 | //QWhatsThis::add( btn, tr( "Click here to add a new transaction." ) ); | 88 | //QWhatsThis::add( btn, tr( "Click here to add a new transaction." ) ); |
89 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotNew() ) ); | 89 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotNew() ) ); |
90 | layout->addWidget( btn, 1, 0 ); | 90 | layout->addWidget( btn, 1, 0 ); |
91 | /* use when we've reminders too */ | 91 | /* use when we've reminders too */ |
92 | #if 0 | 92 | #if 0 |
93 | btn = new QPushButton( Resource::loadPixmap( "edit" ), tr( "Edit" ), this ); | 93 | btn = new QPushButton( Resource::loadPixmap( "edit" ), tr( "Edit" ), this ); |
94 | //QWhatsThis::add( btn, tr( "Select a transaction and then click here to edit it." ) ); | 94 | //QWhatsThis::add( btn, tr( "Select a transaction and then click here to edit it." ) ); |
95 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotEdit() ) ); | 95 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotEdit() ) ); |
96 | layout->addWidget( btn, 1, 1 ); | 96 | layout->addWidget( btn, 1, 1 ); |
97 | #endif | 97 | #endif |
98 | 98 | ||
99 | btn = new QPushButton( Resource::loadPixmap( "trash" ), tr( "Delete" ), this ); | 99 | btn = new QPushButton( Resource::loadPixmap( "trash" ), tr( "Delete" ), this ); |
100 | //QWhatsThis::add( btn, tr( "Select a checkbook and then click here to delete it." ) ); | 100 | //QWhatsThis::add( btn, tr( "Select a checkbook and then click here to delete it." ) ); |
101 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotDelete() ) ); | 101 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotDelete() ) ); |
102 | layout->addWidget( btn, 1, 2 ); | 102 | layout->addWidget( btn, 1, 2 ); |
103 | } | 103 | } |
104 | 104 | ||
105 | TaskEditorAlarms::~TaskEditorAlarms(){ | 105 | TaskEditorAlarms::~TaskEditorAlarms(){ |
106 | } | 106 | } |
107 | 107 | ||
108 | void TaskEditorAlarms::slotNew(){ | 108 | void TaskEditorAlarms::slotNew(){ |
109 | (void)new AlarmItem(lstAlarms, OPimAlarm(0, QDateTime::currentDateTime() ) ); | 109 | (void)new AlarmItem(lstAlarms, OPimAlarm(0, QDateTime::currentDateTime() ) ); |
110 | } | 110 | } |
111 | 111 | ||
112 | void TaskEditorAlarms::slotEdit(){ | 112 | void TaskEditorAlarms::slotEdit(){ |
113 | } | 113 | } |
114 | 114 | ||
115 | void TaskEditorAlarms::slotDelete(){ | 115 | void TaskEditorAlarms::slotDelete(){ |
116 | QListViewItem* item = lstAlarms->currentItem(); | 116 | QListViewItem* item = lstAlarms->currentItem(); |
117 | if (!item) return; | 117 | if (!item) return; |
118 | 118 | ||
119 | lstAlarms->takeItem( item ); delete item; | 119 | lstAlarms->takeItem( item ); delete item; |
120 | 120 | ||
121 | 121 | ||
122 | } | 122 | } |
123 | 123 | ||
124 | void TaskEditorAlarms::load( const OPimTodo& todo) { | 124 | void TaskEditorAlarms::load( const OPimTodo& todo) { |
125 | lstAlarms->clear(); | 125 | lstAlarms->clear(); |
126 | if (!todo.hasNotifiers() ) return; | 126 | if (!todo.hasNotifiers() ) return; |
127 | 127 | ||
128 | OPimNotifyManager::Alarms als = todo.notifiers().alarms(); | 128 | OPimNotifyManager::Alarms als = todo.notifiers().alarms(); |
129 | 129 | ||
130 | if (als.isEmpty() ) return; | 130 | if (als.isEmpty() ) return; |
131 | 131 | ||
132 | OPimNotifyManager::Alarms::Iterator it = als.begin(); | 132 | OPimNotifyManager::Alarms::Iterator it = als.begin(); |
133 | for ( ; it != als.end(); ++it ) | 133 | for ( ; it != als.end(); ++it ) |
134 | (void)new AlarmItem( lstAlarms, (*it) ); | 134 | (void)new AlarmItem( lstAlarms, (*it) ); |
135 | 135 | ||
136 | 136 | ||
137 | } | 137 | } |
138 | void TaskEditorAlarms::save( OPimTodo& todo ) { | 138 | void TaskEditorAlarms::save( OPimTodo& todo ) { |
139 | if (lstAlarms->childCount() <= 0 ) return; | 139 | if (lstAlarms->childCount() <= 0 ) return; |
140 | 140 | ||
141 | OPimNotifyManager::Alarms alarms; | 141 | OPimNotifyManager::Alarms alarms; |
142 | 142 | ||
143 | for ( QListViewItem* item = lstAlarms->firstChild(); item; item = item->nextSibling() ) { | 143 | for ( QListViewItem* item = lstAlarms->firstChild(); item; item = item->nextSibling() ) { |
144 | AlarmItem *alItem = static_cast<AlarmItem*>(item); | 144 | AlarmItem *alItem = static_cast<AlarmItem*>(item); |
145 | alarms.append( alItem->alarm() ); | 145 | alarms.append( alItem->alarm() ); |
146 | } | 146 | } |
147 | 147 | ||
148 | OPimNotifyManager& manager = todo.notifiers(); | 148 | OPimNotifyManager& manager = todo.notifiers(); |
149 | manager.setAlarms( alarms ); | 149 | manager.setAlarms( alarms ); |
150 | } | 150 | } |
151 | void TaskEditorAlarms::inlineEdit( QListViewItem* alarm, const QPoint& p, int col ) { | 151 | void TaskEditorAlarms::inlineEdit( QListViewItem* alarm, const QPoint& p, int col ) { |
152 | if (!alarm) return; | 152 | if (!alarm) return; |
153 | 153 | ||
154 | AlarmItem* item = static_cast<AlarmItem*>(alarm); | 154 | AlarmItem* item = static_cast<AlarmItem*>(alarm); |
155 | switch( col ) { | 155 | switch( col ) { |
156 | // date | 156 | // date |
157 | case 0: | 157 | case 0: |
158 | return inlineSetDate( item, p ); | 158 | return inlineSetDate( item, p ); |
159 | // time | 159 | // time |
160 | case 1: | 160 | case 1: |
161 | return inlineSetTime( item ); | 161 | return inlineSetTime( item ); |
162 | // type | 162 | // type |
163 | case 2: | 163 | case 2: |
164 | return inlineSetType( item, p ); | 164 | return inlineSetType( item, p ); |
165 | } | 165 | } |
166 | } | 166 | } |
167 | void TaskEditorAlarms::inlineSetDate( AlarmItem* item, const QPoint& p ) { | 167 | void TaskEditorAlarms::inlineSetDate( AlarmItem* item, const QPoint& p ) { |
168 | QPopupMenu* pop = popup( 0 ); | 168 | QPopupMenu* pop = popup( 0 ); |
169 | m_dbMonth->setDate( item->alarm().dateTime().date() ); | 169 | m_dbMonth->setDate( item->alarm().dateTime().date() ); |
170 | pop->exec(p); | 170 | pop->exec(p); |
171 | 171 | ||
172 | OPimAlarm al = item->alarm(); | 172 | OPimAlarm al = item->alarm(); |
173 | QDateTime dt = al.dateTime(); | 173 | QDateTime dt = al.dateTime(); |
174 | dt.setDate( m_dbMonth->selectedDate() ); | 174 | dt.setDate( m_dbMonth->selectedDate() ); |
175 | al.setDateTime( dt ); | 175 | al.setDateTime( dt ); |
176 | item->setAlarm( al ); | 176 | item->setAlarm( al ); |
177 | } | 177 | } |
178 | void TaskEditorAlarms::inlineSetType( AlarmItem* item, const QPoint& p ) { | 178 | void TaskEditorAlarms::inlineSetType( AlarmItem* item, const QPoint& p ) { |
179 | int type; | 179 | int type; |
diff --git a/core/pim/todo/taskeditorstatus.cpp b/core/pim/todo/taskeditorstatus.cpp index 367dd58..16351e0 100644 --- a/core/pim/todo/taskeditorstatus.cpp +++ b/core/pim/todo/taskeditorstatus.cpp | |||
@@ -7,226 +7,226 @@ | |||
7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This program is distributed in the hope that | 12 | .i_,=:_. -<s. This program is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
17 | ..}^=.= = ; Library General Public License for more | 17 | ..}^=.= = ; Library General Public License for more |
18 | ++= -. .` .: details. | 18 | ++= -. .` .: details. |
19 | : = ...= . :.=- | 19 | : = ...= . :.=- |
20 | -. .:....=;==+<; You should have received a copy of the GNU | 20 | -. .:....=;==+<; You should have received a copy of the GNU |
21 | -_. . . )=. = General Public License along with | 21 | -_. . . )=. = General Public License along with |
22 | -- :-=` this library; see the file COPYING.LIB. | 22 | -- :-=` this library; see the file COPYING.LIB. |
23 | If not, write to the Free Software Foundation, | 23 | If not, write to the Free Software Foundation, |
24 | Inc., 59 Temple Place - Suite 330, | 24 | Inc., 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "taskeditorstatus.h" | 29 | #include "taskeditorstatus.h" |
30 | 30 | ||
31 | #include <opie2/opimmaintainer.h> | 31 | #include <opie2/opimmaintainer.h> |
32 | #include <opie2/opimstate.h> | 32 | #include <opie2/opimstate.h> |
33 | 33 | ||
34 | #include <qpe/datebookmonth.h> | 34 | #include <qpe/datebookmonth.h> |
35 | 35 | ||
36 | #include <qcheckbox.h> | 36 | #include <qcheckbox.h> |
37 | #include <qcombobox.h> | 37 | #include <qcombobox.h> |
38 | #include <qlabel.h> | 38 | #include <qlabel.h> |
39 | #include <qlayout.h> | 39 | #include <qlayout.h> |
40 | #include <qwhatsthis.h> | 40 | #include <qwhatsthis.h> |
41 | 41 | ||
42 | // FIXME add the hack slots instead of setPopup!!!! | 42 | // FIXME add the hack slots instead of setPopup!!!! |
43 | // drw you shouldn't have removed them | 43 | // drw you shouldn't have removed them |
44 | 44 | ||
45 | TaskEditorStatus::TaskEditorStatus( QWidget* parent, const char* name, WFlags fl ) | 45 | TaskEditorStatus::TaskEditorStatus( QWidget* parent, const char* name, WFlags fl ) |
46 | : QWidget( parent, name, fl ) | 46 | : QWidget( parent, name, fl ) |
47 | { | 47 | { |
48 | QDate curDate = QDate::currentDate(); | 48 | QDate curDate = QDate::currentDate(); |
49 | m_start = m_comp = m_due = curDate; | 49 | m_start = m_comp = m_due = curDate; |
50 | QString curDateStr = TimeString::longDateString( curDate ); | 50 | QString curDateStr = TimeString::longDateString( curDate ); |
51 | 51 | ||
52 | QVBoxLayout *vb = new QVBoxLayout( this ); | 52 | QVBoxLayout *vb = new QVBoxLayout( this ); |
53 | 53 | ||
54 | QScrollView *sv = new QScrollView( this ); | 54 | QScrollView *sv = new QScrollView( this ); |
55 | vb->addWidget( sv ); | 55 | vb->addWidget( sv ); |
56 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 56 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
57 | sv->setFrameStyle( QFrame::NoFrame ); | 57 | sv->setFrameStyle( QFrame::NoFrame ); |
58 | 58 | ||
59 | QWidget *container = new QWidget( sv->viewport() ); | 59 | QWidget *container = new QWidget( sv->viewport() ); |
60 | sv->addChild( container ); | 60 | sv->addChild( container ); |
61 | 61 | ||
62 | QGridLayout *layout = new QGridLayout( container, 7, 3, 4, 4 ); | 62 | QGridLayout *layout = new QGridLayout( container, 7, 3, 4, 4 ); |
63 | 63 | ||
64 | // Status | 64 | // Status |
65 | QLabel *label = new QLabel( tr( "Status:" ), container ); | 65 | QLabel *label = new QLabel( tr( "Status:" ), container ); |
66 | layout->addWidget( label, 0, 0 ); | 66 | layout->addWidget( label, 0, 0 ); |
67 | QWhatsThis::add( label, tr( "Click here to set the current status of this task." ) ); | 67 | QWhatsThis::add( label, tr( "Click here to set the current status of this task." ) ); |
68 | cmbStatus = new QComboBox( FALSE, container ); | 68 | cmbStatus = new QComboBox( FALSE, container ); |
69 | cmbStatus->insertItem( tr( "Started" ) ); | 69 | cmbStatus->insertItem( tr( "Started" ) ); |
70 | cmbStatus->insertItem( tr( "Postponed" ) ); | 70 | cmbStatus->insertItem( tr( "Postponed" ) ); |
71 | cmbStatus->insertItem( tr( "Finished" ) ); | 71 | cmbStatus->insertItem( tr( "Finished" ) ); |
72 | cmbStatus->insertItem( tr( "Not started" ) ); | 72 | cmbStatus->insertItem( tr( "Not started" ) ); |
73 | layout->addMultiCellWidget( cmbStatus, 0, 0, 1, 2 ); | 73 | layout->addMultiCellWidget( cmbStatus, 0, 0, 1, 2 ); |
74 | QWhatsThis::add( cmbStatus, tr( "Click here to set the current status of this task." ) ); | 74 | QWhatsThis::add( cmbStatus, tr( "Click here to set the current status of this task." ) ); |
75 | 75 | ||
76 | // Progress | 76 | // Progress |
77 | label = new QLabel( tr( "Progress:" ), container ); | 77 | label = new QLabel( tr( "Progress:" ), container ); |
78 | layout->addWidget( label, 1, 0 ); | 78 | layout->addWidget( label, 1, 0 ); |
79 | QWhatsThis::add( label, tr( "Select progress made on this task here." ) ); | 79 | QWhatsThis::add( label, tr( "Select progress made on this task here." ) ); |
80 | cmbProgress = new QComboBox( FALSE, container ); | 80 | cmbProgress = new QComboBox( FALSE, container ); |
81 | cmbProgress->insertItem( tr( "0 %" ) ); | 81 | cmbProgress->insertItem( tr( "0 %" ) ); |
82 | cmbProgress->insertItem( tr( "20 %" ) ); | 82 | cmbProgress->insertItem( tr( "20 %" ) ); |
83 | cmbProgress->insertItem( tr( "40 %" ) ); | 83 | cmbProgress->insertItem( tr( "40 %" ) ); |
84 | cmbProgress->insertItem( tr( "60 %" ) ); | 84 | cmbProgress->insertItem( tr( "60 %" ) ); |
85 | cmbProgress->insertItem( tr( "80 %" ) ); | 85 | cmbProgress->insertItem( tr( "80 %" ) ); |
86 | cmbProgress->insertItem( tr( "100 %" ) ); | 86 | cmbProgress->insertItem( tr( "100 %" ) ); |
87 | layout->addMultiCellWidget( cmbProgress, 1, 1, 1, 2 ); | 87 | layout->addMultiCellWidget( cmbProgress, 1, 1, 1, 2 ); |
88 | QWhatsThis::add( cmbProgress, tr( "Select progress made on this task here." ) ); | 88 | QWhatsThis::add( cmbProgress, tr( "Select progress made on this task here." ) ); |
89 | 89 | ||
90 | // Start date | 90 | // Start date |
91 | ckbStart = new QCheckBox( tr( "Start Date:" ), container ); | 91 | ckbStart = new QCheckBox( tr( "Start Date:" ), container ); |
92 | layout->addWidget( ckbStart, 2, 0 ); | 92 | layout->addWidget( ckbStart, 2, 0 ); |
93 | QWhatsThis::add( ckbStart, tr( "Click here to set the date this task was started." ) ); | 93 | QWhatsThis::add( ckbStart, tr( "Click here to set the date this task was started." ) ); |
94 | connect( ckbStart, SIGNAL( clicked() ), this, SLOT( slotStartChecked() ) ); | 94 | connect( ckbStart, SIGNAL( clicked() ), this, SLOT( slotStartChecked() ) ); |
95 | btnStart = new QPushButton( curDateStr, container ); | 95 | btnStart = new QPushButton( curDateStr, container ); |
96 | btnStart->setEnabled( FALSE ); | 96 | btnStart->setEnabled( FALSE ); |
97 | layout->addMultiCellWidget( btnStart, 2, 2, 1, 2 ); | 97 | layout->addMultiCellWidget( btnStart, 2, 2, 1, 2 ); |
98 | QWhatsThis::add( btnStart, tr( "Click here to set the date this task was started." ) ); | 98 | QWhatsThis::add( btnStart, tr( "Click here to set the date this task was started." ) ); |
99 | QPopupMenu *popup = new QPopupMenu( this ); | 99 | QPopupMenu *popup = new QPopupMenu( this ); |
100 | m_startBook = new DateBookMonth( popup, 0, TRUE ); | 100 | m_startBook = new DateBookMonth( popup, 0, TRUE ); |
101 | popup->insertItem( m_startBook ); | 101 | popup->insertItem( m_startBook ); |
102 | btnStart->setPopup( popup ); | 102 | btnStart->setPopup( popup ); |
103 | connect( m_startBook, SIGNAL( dateClicked( int, int, int ) ), | 103 | connect( m_startBook, SIGNAL( dateClicked(int,int,int) ), |
104 | this, SLOT( slotStartChanged( int, int, int ) ) ); | 104 | this, SLOT( slotStartChanged(int,int,int) ) ); |
105 | 105 | ||
106 | // Due date | 106 | // Due date |
107 | ckbDue = new QCheckBox( tr( "Due Date:" ), container ); | 107 | ckbDue = new QCheckBox( tr( "Due Date:" ), container ); |
108 | layout->addWidget( ckbDue, 3, 0 ); | 108 | layout->addWidget( ckbDue, 3, 0 ); |
109 | QWhatsThis::add( ckbDue, tr( "Click here to set the date this task needs to be completed by." ) ); | 109 | QWhatsThis::add( ckbDue, tr( "Click here to set the date this task needs to be completed by." ) ); |
110 | connect( ckbDue, SIGNAL( clicked() ), this, SLOT( slotDueChecked() ) ); | 110 | connect( ckbDue, SIGNAL( clicked() ), this, SLOT( slotDueChecked() ) ); |
111 | btnDue = new QPushButton( curDateStr, container ); | 111 | btnDue = new QPushButton( curDateStr, container ); |
112 | btnDue->setEnabled( FALSE ); | 112 | btnDue->setEnabled( FALSE ); |
113 | layout->addMultiCellWidget( btnDue, 3, 3, 1, 2 ); | 113 | layout->addMultiCellWidget( btnDue, 3, 3, 1, 2 ); |
114 | QWhatsThis::add( btnDue, tr( "Click here to set the date this task needs to be completed by." ) ); | 114 | QWhatsThis::add( btnDue, tr( "Click here to set the date this task needs to be completed by." ) ); |
115 | popup = new QPopupMenu( this ); | 115 | popup = new QPopupMenu( this ); |
116 | m_dueBook = new DateBookMonth( popup, 0, TRUE ); | 116 | m_dueBook = new DateBookMonth( popup, 0, TRUE ); |
117 | popup->insertItem( m_dueBook ); | 117 | popup->insertItem( m_dueBook ); |
118 | btnDue->setPopup( popup ); | 118 | btnDue->setPopup( popup ); |
119 | connect( m_dueBook, SIGNAL( dateClicked( int, int, int ) ), | 119 | connect( m_dueBook, SIGNAL( dateClicked(int,int,int) ), |
120 | this, SLOT( slotDueChanged( int, int, int ) ) ); | 120 | this, SLOT( slotDueChanged(int,int,int) ) ); |
121 | 121 | ||
122 | // Completed | 122 | // Completed |
123 | ckbComp = new QCheckBox( tr( "Completed:" ), container ); | 123 | ckbComp = new QCheckBox( tr( "Completed:" ), container ); |
124 | layout->addWidget( ckbComp, 4, 0 ); | 124 | layout->addWidget( ckbComp, 4, 0 ); |
125 | QWhatsThis::add( ckbComp, tr( "Click here to mark this task as completed." ) ); | 125 | QWhatsThis::add( ckbComp, tr( "Click here to mark this task as completed." ) ); |
126 | connect( ckbComp, SIGNAL( clicked() ), this, SLOT( slotCompChecked() ) ); | 126 | connect( ckbComp, SIGNAL( clicked() ), this, SLOT( slotCompChecked() ) ); |
127 | btnComp = new QPushButton( curDateStr, container ); | 127 | btnComp = new QPushButton( curDateStr, container ); |
128 | btnComp->setEnabled( FALSE ); | 128 | btnComp->setEnabled( FALSE ); |
129 | layout->addMultiCellWidget( btnComp, 4, 4, 1, 2 ); | 129 | layout->addMultiCellWidget( btnComp, 4, 4, 1, 2 ); |
130 | QWhatsThis::add( btnComp, tr( "Click here to set the date this task was completed." ) ); | 130 | QWhatsThis::add( btnComp, tr( "Click here to set the date this task was completed." ) ); |
131 | popup = new QPopupMenu( this ); | 131 | popup = new QPopupMenu( this ); |
132 | m_compBook = new DateBookMonth( popup, 0, TRUE ); | 132 | m_compBook = new DateBookMonth( popup, 0, TRUE ); |
133 | popup->insertItem( m_compBook ); | 133 | popup->insertItem( m_compBook ); |
134 | btnComp->setPopup( popup ); | 134 | btnComp->setPopup( popup ); |
135 | connect( m_compBook, SIGNAL( dateClicked( int, int, int ) ), | 135 | connect( m_compBook, SIGNAL( dateClicked(int,int,int) ), |
136 | this, SLOT( slotCompChanged( int, int, int ) ) ); | 136 | this, SLOT( slotCompChanged(int,int,int) ) ); |
137 | 137 | ||
138 | QSpacerItem *spacer = new QSpacerItem( 5, 5, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding ); | 138 | QSpacerItem *spacer = new QSpacerItem( 5, 5, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding ); |
139 | layout->addItem( spacer, 5, 0 ); | 139 | layout->addItem( spacer, 5, 0 ); |
140 | 140 | ||
141 | // Maintainer mode | 141 | // Maintainer mode |
142 | #if 0 | 142 | #if 0 |
143 | label = new QLabel( tr( "Maintainer Mode:" ), container ); | 143 | label = new QLabel( tr( "Maintainer Mode:" ), container ); |
144 | layout->addWidget( label, 6, 0 ); | 144 | layout->addWidget( label, 6, 0 ); |
145 | QWhatsThis::add( label, tr( "Click here to set the maintainer's role." ) ); | 145 | QWhatsThis::add( label, tr( "Click here to set the maintainer's role." ) ); |
146 | cmbMaintMode = new QComboBox( FALSE, container ); | 146 | cmbMaintMode = new QComboBox( FALSE, container ); |
147 | cmbMaintMode->insertItem( tr( "Nothing" ) ); | 147 | cmbMaintMode->insertItem( tr( "Nothing" ) ); |
148 | cmbMaintMode->insertItem( tr( "Responsible" ) ); | 148 | cmbMaintMode->insertItem( tr( "Responsible" ) ); |
149 | cmbMaintMode->insertItem( tr( "Done By" ) ); | 149 | cmbMaintMode->insertItem( tr( "Done By" ) ); |
150 | cmbMaintMode->insertItem( tr( "Coordinating" ) ); | 150 | cmbMaintMode->insertItem( tr( "Coordinating" ) ); |
151 | // layout->addMultiCellWidget( cmbMaintMode, 6, 6, 1, 2 ); | 151 | // layout->addMultiCellWidget( cmbMaintMode, 6, 6, 1, 2 ); |
152 | QWhatsThis::add( cmbMaintMode, tr( "Click here to set the maintainer's role." ) ); | 152 | QWhatsThis::add( cmbMaintMode, tr( "Click here to set the maintainer's role." ) ); |
153 | 153 | ||
154 | // Maintainer | 154 | // Maintainer |
155 | label = new QLabel( tr( "Maintainer:" ), container ); | 155 | label = new QLabel( tr( "Maintainer:" ), container ); |
156 | layout->addWidget( label, 7, 0 ); | 156 | layout->addWidget( label, 7, 0 ); |
157 | QWhatsThis::add( label, tr( "This is the name of the current task maintainer." ) ); | 157 | QWhatsThis::add( label, tr( "This is the name of the current task maintainer." ) ); |
158 | txtMaintainer = new QLabel( tr( "test" ), container ); | 158 | txtMaintainer = new QLabel( tr( "test" ), container ); |
159 | txtMaintainer->setTextFormat( QLabel::RichText ); | 159 | txtMaintainer->setTextFormat( QLabel::RichText ); |
160 | layout->addWidget( txtMaintainer, 7, 1 ); | 160 | layout->addWidget( txtMaintainer, 7, 1 ); |
161 | QWhatsThis::add( txtMaintainer, tr( "This is the name of the current task maintainer." ) ); | 161 | QWhatsThis::add( txtMaintainer, tr( "This is the name of the current task maintainer." ) ); |
162 | tbtMaintainer = new QToolButton( container ); | 162 | tbtMaintainer = new QToolButton( container ); |
163 | tbtMaintainer->setPixmap( Resource::loadPixmap( "todo/more" ) ); | 163 | tbtMaintainer->setPixmap( Resource::loadPixmap( "todo/more" ) ); |
164 | // layout->addWidget( tbtMaintainer, 7, 2 ); | 164 | // layout->addWidget( tbtMaintainer, 7, 2 ); |
165 | QWhatsThis::add( tbtMaintainer, tr( "Click here to select the task maintainer." ) ); | 165 | QWhatsThis::add( tbtMaintainer, tr( "Click here to select the task maintainer." ) ); |
166 | #endif | 166 | #endif |
167 | } | 167 | } |
168 | 168 | ||
169 | TaskEditorStatus::~TaskEditorStatus() | 169 | TaskEditorStatus::~TaskEditorStatus() |
170 | { | 170 | { |
171 | } | 171 | } |
172 | 172 | ||
173 | void TaskEditorStatus::load( const OPimTodo &todo ) | 173 | void TaskEditorStatus::load( const OPimTodo &todo ) |
174 | { | 174 | { |
175 | QDate date = QDate::currentDate(); | 175 | QDate date = QDate::currentDate(); |
176 | QString str = TimeString::longDateString( date ); | 176 | QString str = TimeString::longDateString( date ); |
177 | 177 | ||
178 | // Status | 178 | // Status |
179 | int state = todo.hasState()? todo.state().state() : OPimState::NotStarted; | 179 | int state = todo.hasState()? todo.state().state() : OPimState::NotStarted; |
180 | if ( state == OPimState::Undefined ) | 180 | if ( state == OPimState::Undefined ) |
181 | state = OPimState::NotStarted; | 181 | state = OPimState::NotStarted; |
182 | cmbStatus->setCurrentItem( state ); | 182 | cmbStatus->setCurrentItem( state ); |
183 | 183 | ||
184 | // Progress | 184 | // Progress |
185 | cmbProgress->setCurrentItem( todo.progress() / 20 ); | 185 | cmbProgress->setCurrentItem( todo.progress() / 20 ); |
186 | 186 | ||
187 | // Start date | 187 | // Start date |
188 | ckbStart->setChecked( todo.hasStartDate() ); | 188 | ckbStart->setChecked( todo.hasStartDate() ); |
189 | btnStart->setEnabled( todo.hasStartDate() ); | 189 | btnStart->setEnabled( todo.hasStartDate() ); |
190 | if ( todo.hasStartDate() ) | 190 | if ( todo.hasStartDate() ) |
191 | { | 191 | { |
192 | m_start = todo.startDate(); | 192 | m_start = todo.startDate(); |
193 | btnStart->setText( TimeString::longDateString( m_start ) ); | 193 | btnStart->setText( TimeString::longDateString( m_start ) ); |
194 | } | 194 | } |
195 | else | 195 | else |
196 | btnStart->setText( str ); | 196 | btnStart->setText( str ); |
197 | 197 | ||
198 | // Due date | 198 | // Due date |
199 | ckbDue->setChecked( todo.hasDueDate() ); | 199 | ckbDue->setChecked( todo.hasDueDate() ); |
200 | btnDue->setText( TimeString::longDateString( todo.dueDate() ) ); | 200 | btnDue->setText( TimeString::longDateString( todo.dueDate() ) ); |
201 | btnDue->setEnabled( todo.hasDueDate() ); | 201 | btnDue->setEnabled( todo.hasDueDate() ); |
202 | m_due = todo.dueDate(); | 202 | m_due = todo.dueDate(); |
203 | 203 | ||
204 | // Completed | 204 | // Completed |
205 | ckbComp->setChecked( todo.isCompleted() ); | 205 | ckbComp->setChecked( todo.isCompleted() ); |
206 | btnComp->setEnabled( todo.hasCompletedDate() ); | 206 | btnComp->setEnabled( todo.hasCompletedDate() ); |
207 | if ( todo.hasCompletedDate() ) | 207 | if ( todo.hasCompletedDate() ) |
208 | { | 208 | { |
209 | m_comp = todo.completedDate(); | 209 | m_comp = todo.completedDate(); |
210 | btnComp->setText( TimeString::longDateString( m_comp ) ); | 210 | btnComp->setText( TimeString::longDateString( m_comp ) ); |
211 | } | 211 | } |
212 | else | 212 | else |
213 | btnComp->setText( str ); | 213 | btnComp->setText( str ); |
214 | 214 | ||
215 | // Maintainer Mode | 215 | // Maintainer Mode |
216 | #if 0 | 216 | #if 0 |
217 | state = todo.hasMaintainer() ? todo.maintainer().mode() : OPimMaintainer::Nothing; | 217 | state = todo.hasMaintainer() ? todo.maintainer().mode() : OPimMaintainer::Nothing; |
218 | if ( state == OPimMaintainer::Undefined ) | 218 | if ( state == OPimMaintainer::Undefined ) |
219 | state = OPimMaintainer::Nothing; | 219 | state = OPimMaintainer::Nothing; |
220 | cmbMaintMode->setCurrentItem( state ); | 220 | cmbMaintMode->setCurrentItem( state ); |
221 | #endif | 221 | #endif |
222 | // Maintainer - not implemented yet | 222 | // Maintainer - not implemented yet |
223 | } | 223 | } |
224 | 224 | ||
225 | void TaskEditorStatus::save( OPimTodo &todo ) | 225 | void TaskEditorStatus::save( OPimTodo &todo ) |
226 | { | 226 | { |
227 | QDate inval; | 227 | QDate inval; |
228 | 228 | ||
229 | // Status | 229 | // Status |
230 | todo.setState( OPimState( cmbStatus->currentItem() ) ); | 230 | todo.setState( OPimState( cmbStatus->currentItem() ) ); |
231 | 231 | ||
232 | // Progress | 232 | // Progress |
diff --git a/core/qws/qcopbridge.cpp b/core/qws/qcopbridge.cpp index c0c52e8..4fd0807 100644 --- a/core/qws/qcopbridge.cpp +++ b/core/qws/qcopbridge.cpp | |||
@@ -1,174 +1,174 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "qcopbridge.h" | 21 | #include "qcopbridge.h" |
22 | #include "transferserver.h" | 22 | #include "transferserver.h" |
23 | 23 | ||
24 | #include <qpe/qcopenvelope_qws.h> | 24 | #include <qpe/qcopenvelope_qws.h> |
25 | #include <qpe/qpeapplication.h> | 25 | #include <qpe/qpeapplication.h> |
26 | #include <qpe/version.h> | 26 | #include <qpe/version.h> |
27 | 27 | ||
28 | #include <qtextstream.h> | 28 | #include <qtextstream.h> |
29 | #ifdef QWS | 29 | #ifdef QWS |
30 | #include <qcopchannel_qws.h> | 30 | #include <qcopchannel_qws.h> |
31 | #endif | 31 | #endif |
32 | 32 | ||
33 | #define _XOPEN_SOURCE | 33 | #define _XOPEN_SOURCE |
34 | #include <pwd.h> | 34 | #include <pwd.h> |
35 | #include <sys/types.h> | 35 | #include <sys/types.h> |
36 | #include <unistd.h> | 36 | #include <unistd.h> |
37 | 37 | ||
38 | #if defined(_OS_LINUX_) | 38 | #if defined(_OS_LINUX_) |
39 | #include <shadow.h> | 39 | #include <shadow.h> |
40 | #endif | 40 | #endif |
41 | 41 | ||
42 | //#define INSECURE | 42 | //#define INSECURE |
43 | 43 | ||
44 | const int block_size = 51200; | 44 | const int block_size = 51200; |
45 | 45 | ||
46 | QCopBridge::QCopBridge( Q_UINT16 port, QObject *parent , | 46 | QCopBridge::QCopBridge( Q_UINT16 port, QObject *parent , |
47 | const char* name ) | 47 | const char* name ) |
48 | : QServerSocket( port, 1, parent, name ), | 48 | : QServerSocket( port, 1, parent, name ), |
49 | desktopChannel( 0 ), | 49 | desktopChannel( 0 ), |
50 | cardChannel( 0 ) | 50 | cardChannel( 0 ) |
51 | { | 51 | { |
52 | if ( !ok() ) | 52 | if ( !ok() ) |
53 | qWarning( "Failed to bind to port %d", port ); | 53 | qWarning( "Failed to bind to port %d", port ); |
54 | else { | 54 | else { |
55 | #ifndef QT_NO_COP | 55 | #ifndef QT_NO_COP |
56 | desktopChannel = new QCopChannel( "QPE/Desktop", this ); | 56 | desktopChannel = new QCopChannel( "QPE/Desktop", this ); |
57 | connect( desktopChannel, SIGNAL(received(const QCString &, const QByteArray &)), | 57 | connect( desktopChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
58 | this, SLOT(desktopMessage( const QCString &, const QByteArray &)) ); | 58 | this, SLOT(desktopMessage(const QCString&,const QByteArray&)) ); |
59 | cardChannel = new QCopChannel( "QPE/Card", this ); | 59 | cardChannel = new QCopChannel( "QPE/Card", this ); |
60 | connect( cardChannel, SIGNAL(received(const QCString &, const QByteArray &)), | 60 | connect( cardChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
61 | this, SLOT(desktopMessage( const QCString &, const QByteArray &)) ); | 61 | this, SLOT(desktopMessage(const QCString&,const QByteArray&)) ); |
62 | #endif | 62 | #endif |
63 | } | 63 | } |
64 | sendSync = FALSE; | 64 | sendSync = FALSE; |
65 | } | 65 | } |
66 | 66 | ||
67 | QCopBridge::~QCopBridge() | 67 | QCopBridge::~QCopBridge() |
68 | { | 68 | { |
69 | #ifndef QT_NO_COP | 69 | #ifndef QT_NO_COP |
70 | delete desktopChannel; | 70 | delete desktopChannel; |
71 | #endif | 71 | #endif |
72 | } | 72 | } |
73 | 73 | ||
74 | void QCopBridge::newConnection( int socket ) | 74 | void QCopBridge::newConnection( int socket ) |
75 | { | 75 | { |
76 | QCopBridgePI *pi = new QCopBridgePI( socket, this ); | 76 | QCopBridgePI *pi = new QCopBridgePI( socket, this ); |
77 | openConnections.append( pi ); | 77 | openConnections.append( pi ); |
78 | connect ( pi, SIGNAL( connectionClosed( QCopBridgePI *) ), this, SLOT( connectionClosed( QCopBridgePI *) ) ); | 78 | connect ( pi, SIGNAL( connectionClosed(QCopBridgePI*) ), this, SLOT( connectionClosed(QCopBridgePI*) ) ); |
79 | #ifndef QT_NO_COP | 79 | #ifndef QT_NO_COP |
80 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; | 80 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; |
81 | #endif | 81 | #endif |
82 | 82 | ||
83 | if ( sendSync ) { | 83 | if ( sendSync ) { |
84 | pi ->startSync(); | 84 | pi ->startSync(); |
85 | sendSync = FALSE; | 85 | sendSync = FALSE; |
86 | } | 86 | } |
87 | } | 87 | } |
88 | 88 | ||
89 | void QCopBridge::connectionClosed( QCopBridgePI *pi ) | 89 | void QCopBridge::connectionClosed( QCopBridgePI *pi ) |
90 | { | 90 | { |
91 | openConnections.remove( pi ); | 91 | openConnections.remove( pi ); |
92 | if ( openConnections.count() == 0 ) { | 92 | if ( openConnections.count() == 0 ) { |
93 | #ifndef QT_NO_COP | 93 | #ifndef QT_NO_COP |
94 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 94 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
95 | #endif | 95 | #endif |
96 | } | 96 | } |
97 | } | 97 | } |
98 | 98 | ||
99 | void QCopBridge::closeOpenConnections() | 99 | void QCopBridge::closeOpenConnections() |
100 | { | 100 | { |
101 | QCopBridgePI *pi; | 101 | QCopBridgePI *pi; |
102 | for ( pi = openConnections.first(); pi != 0; pi = openConnections.next() ) | 102 | for ( pi = openConnections.first(); pi != 0; pi = openConnections.next() ) |
103 | pi->close(); | 103 | pi->close(); |
104 | } | 104 | } |
105 | 105 | ||
106 | 106 | ||
107 | void QCopBridge::desktopMessage( const QCString &command, const QByteArray &args ) | 107 | void QCopBridge::desktopMessage( const QCString &command, const QByteArray &args ) |
108 | { | 108 | { |
109 | command.stripWhiteSpace(); | 109 | command.stripWhiteSpace(); |
110 | 110 | ||
111 | int paren = command.find( "(" ); | 111 | int paren = command.find( "(" ); |
112 | if ( paren <= 0 ) { | 112 | if ( paren <= 0 ) { |
113 | qDebug("DesktopMessage: bad qcop syntax"); | 113 | qDebug("DesktopMessage: bad qcop syntax"); |
114 | return; | 114 | return; |
115 | } | 115 | } |
116 | 116 | ||
117 | QString params = command.mid( paren + 1 ); | 117 | QString params = command.mid( paren + 1 ); |
118 | if ( params[params.length()-1] != ')' ) { | 118 | if ( params[params.length()-1] != ')' ) { |
119 | qDebug("DesktopMessage: bad qcop syntax"); | 119 | qDebug("DesktopMessage: bad qcop syntax"); |
120 | return; | 120 | return; |
121 | } | 121 | } |
122 | 122 | ||
123 | params.truncate( params.length()-1 ); | 123 | params.truncate( params.length()-1 ); |
124 | 124 | ||
125 | QStringList paramList = QStringList::split( ",", params ); | 125 | QStringList paramList = QStringList::split( ",", params ); |
126 | QString data; | 126 | QString data; |
127 | if ( paramList.count() ) { | 127 | if ( paramList.count() ) { |
128 | QDataStream stream( args, IO_ReadOnly ); | 128 | QDataStream stream( args, IO_ReadOnly ); |
129 | for ( QStringList::Iterator it = paramList.begin(); it != paramList.end(); ++it ) { | 129 | for ( QStringList::Iterator it = paramList.begin(); it != paramList.end(); ++it ) { |
130 | QString str; | 130 | QString str; |
131 | if ( *it == "QString" ) { | 131 | if ( *it == "QString" ) { |
132 | stream >> str; | 132 | stream >> str; |
133 | } else if ( *it == "QCString" ) { | 133 | } else if ( *it == "QCString" ) { |
134 | QCString cstr; | 134 | QCString cstr; |
135 | stream >> cstr; | 135 | stream >> cstr; |
136 | str = QString::fromLocal8Bit( cstr ); | 136 | str = QString::fromLocal8Bit( cstr ); |
137 | } else if ( *it == "int" ) { | 137 | } else if ( *it == "int" ) { |
138 | int i; | 138 | int i; |
139 | stream >> i; | 139 | stream >> i; |
140 | str = QString::number( i ); | 140 | str = QString::number( i ); |
141 | } else if ( *it == "bool" ) { | 141 | } else if ( *it == "bool" ) { |
142 | int i; | 142 | int i; |
143 | stream >> i; | 143 | stream >> i; |
144 | str = QString::number( i ); | 144 | str = QString::number( i ); |
145 | } else { | 145 | } else { |
146 | qDebug(" cannot route the argument type %s throught the qcop bridge", (*it).latin1() ); | 146 | qDebug(" cannot route the argument type %s throught the qcop bridge", (*it).latin1() ); |
147 | return; | 147 | return; |
148 | } | 148 | } |
149 | QString estr; | 149 | QString estr; |
150 | for (int i=0; i<(int)str.length(); i++) { | 150 | for (int i=0; i<(int)str.length(); i++) { |
151 | QChar ch = str[i]; | 151 | QChar ch = str[i]; |
152 | if ( ch.row() ) | 152 | if ( ch.row() ) |
153 | goto quick; | 153 | goto quick; |
154 | switch (ch.cell()) { | 154 | switch (ch.cell()) { |
155 | case '&': | 155 | case '&': |
156 | estr.append( "&" ); | 156 | estr.append( "&" ); |
157 | break; | 157 | break; |
158 | case ' ': | 158 | case ' ': |
159 | estr.append( "&0x20;" ); | 159 | estr.append( "&0x20;" ); |
160 | break; | 160 | break; |
161 | case '\n': | 161 | case '\n': |
162 | estr.append( "&0x0d;" ); | 162 | estr.append( "&0x0d;" ); |
163 | break; | 163 | break; |
164 | case '\r': | 164 | case '\r': |
165 | estr.append( "&0x0a;" ); | 165 | estr.append( "&0x0a;" ); |
166 | break; | 166 | break; |
167 | default: quick: | 167 | default: quick: |
168 | estr.append(ch); | 168 | estr.append(ch); |
169 | } | 169 | } |
170 | } | 170 | } |
171 | data += " " + estr; | 171 | data += " " + estr; |
172 | } | 172 | } |
173 | } | 173 | } |
174 | QString sendCommand = QString(command.data()) + data; | 174 | QString sendCommand = QString(command.data()) + data; |
diff --git a/core/qws/transferserver.cpp b/core/qws/transferserver.cpp index 30bf438..daf63ec 100644 --- a/core/qws/transferserver.cpp +++ b/core/qws/transferserver.cpp | |||
@@ -201,205 +201,205 @@ bool SyncAuthentication::checkPassword( const QString& password ) | |||
201 | cpwd = QString::fromLocal8Bit( spw->sp_pwdp ); | 201 | cpwd = QString::fromLocal8Bit( spw->sp_pwdp ); |
202 | 202 | ||
203 | // Note: some systems use more than crypt for passwords. | 203 | // Note: some systems use more than crypt for passwords. |
204 | QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) ); | 204 | QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) ); |
205 | if ( cpwd == cpassword ) | 205 | if ( cpwd == cpassword ) |
206 | return TRUE; | 206 | return TRUE; |
207 | #endif | 207 | #endif |
208 | 208 | ||
209 | static int lastdenial = 0; | 209 | static int lastdenial = 0; |
210 | static int denials = 0; | 210 | static int denials = 0; |
211 | int now = time(0); | 211 | int now = time(0); |
212 | 212 | ||
213 | // Detect old Qtopia Desktop (no password) | 213 | // Detect old Qtopia Desktop (no password) |
214 | if ( password.isEmpty() ) { | 214 | if ( password.isEmpty() ) { |
215 | if ( denials < 1 || now > lastdenial + 600 ) { | 215 | if ( denials < 1 || now > lastdenial + 600 ) { |
216 | QMessageBox::warning( 0, tr("Sync Connection"), | 216 | QMessageBox::warning( 0, tr("Sync Connection"), |
217 | tr("<p>An unauthorized system is requesting access to this device." | 217 | tr("<p>An unauthorized system is requesting access to this device." |
218 | "<p>If you are using a version of Qtopia Desktop older than 1.5.1, " | 218 | "<p>If you are using a version of Qtopia Desktop older than 1.5.1, " |
219 | "please upgrade."), | 219 | "please upgrade."), |
220 | tr("Deny") ); | 220 | tr("Deny") ); |
221 | denials++; | 221 | denials++; |
222 | lastdenial = now; | 222 | lastdenial = now; |
223 | } | 223 | } |
224 | return FALSE; | 224 | return FALSE; |
225 | } | 225 | } |
226 | 226 | ||
227 | // Second, check sync password... | 227 | // Second, check sync password... |
228 | QString pass = password.left(6); | 228 | QString pass = password.left(6); |
229 | /* old QtopiaDesktops are sending | 229 | /* old QtopiaDesktops are sending |
230 | * rootme newer versions got a Qtopia | 230 | * rootme newer versions got a Qtopia |
231 | * prefixed. Qtopia prefix will suceed | 231 | * prefixed. Qtopia prefix will suceed |
232 | * until the sync software syncs up | 232 | * until the sync software syncs up |
233 | * FIXME | 233 | * FIXME |
234 | */ | 234 | */ |
235 | if ( pass == "rootme" || pass == "Qtopia") { | 235 | if ( pass == "rootme" || pass == "Qtopia") { |
236 | 236 | ||
237 | QString cpassword = QString::fromLocal8Bit( crypt( password.mid(8).local8Bit(), "qp" ) ); | 237 | QString cpassword = QString::fromLocal8Bit( crypt( password.mid(8).local8Bit(), "qp" ) ); |
238 | Config cfg("Security"); | 238 | Config cfg("Security"); |
239 | cfg.setGroup("Sync"); | 239 | cfg.setGroup("Sync"); |
240 | QString pwds = cfg.readEntry("Passwords"); | 240 | QString pwds = cfg.readEntry("Passwords"); |
241 | if ( QStringList::split(QChar(' '), pwds).contains(cpassword) ) | 241 | if ( QStringList::split(QChar(' '), pwds).contains(cpassword) ) |
242 | return TRUE; | 242 | return TRUE; |
243 | 243 | ||
244 | // Unrecognized system. Be careful... | 244 | // Unrecognized system. Be careful... |
245 | 245 | ||
246 | if ( (denials > 2 && now < lastdenial + 600) | 246 | if ( (denials > 2 && now < lastdenial + 600) |
247 | || QMessageBox::warning(0, tr("Sync Connection"), | 247 | || QMessageBox::warning(0, tr("Sync Connection"), |
248 | tr("<p>An unrecognized system is requesting access to this device." | 248 | tr("<p>An unrecognized system is requesting access to this device." |
249 | "<p>If you have just initiated a Sync for the first time, this is normal."), | 249 | "<p>If you have just initiated a Sync for the first time, this is normal."), |
250 | tr("Allow"), tr("Deny"), 0, 1, 1 ) == 1 ) { | 250 | tr("Allow"), tr("Deny"), 0, 1, 1 ) == 1 ) { |
251 | denials++; | 251 | denials++; |
252 | lastdenial = now; | 252 | lastdenial = now; |
253 | return FALSE; | 253 | return FALSE; |
254 | } | 254 | } |
255 | else { | 255 | else { |
256 | denials = 0; | 256 | denials = 0; |
257 | cfg.writeEntry("Passwords", pwds + " " + cpassword); | 257 | cfg.writeEntry("Passwords", pwds + " " + cpassword); |
258 | return TRUE; | 258 | return TRUE; |
259 | } | 259 | } |
260 | } | 260 | } |
261 | 261 | ||
262 | return FALSE; | 262 | return FALSE; |
263 | } | 263 | } |
264 | 264 | ||
265 | ServerPI::ServerPI( int socket, QObject *parent , const char* name ) | 265 | ServerPI::ServerPI( int socket, QObject *parent , const char* name ) |
266 | : QSocket( parent, name ) , dtp( 0 ), serversocket( 0 ), waitsocket( 0 ) | 266 | : QSocket( parent, name ) , dtp( 0 ), serversocket( 0 ), waitsocket( 0 ) |
267 | { | 267 | { |
268 | state = Connected; | 268 | state = Connected; |
269 | 269 | ||
270 | setSocket( socket ); | 270 | setSocket( socket ); |
271 | 271 | ||
272 | peerport = peerPort(); | 272 | peerport = peerPort(); |
273 | peeraddress = peerAddress(); | 273 | peeraddress = peerAddress(); |
274 | 274 | ||
275 | #ifndef INSECURE | 275 | #ifndef INSECURE |
276 | 276 | ||
277 | if ( !SyncAuthentication::isAuthorized(peeraddress) ) { | 277 | if ( !SyncAuthentication::isAuthorized(peeraddress) ) { |
278 | state = Forbidden; | 278 | state = Forbidden; |
279 | startTimer( 0 ); | 279 | startTimer( 0 ); |
280 | } | 280 | } |
281 | else | 281 | else |
282 | #endif | 282 | #endif |
283 | { | 283 | { |
284 | connect( this, SIGNAL( readyRead() ), SLOT( read() ) ); | 284 | connect( this, SIGNAL( readyRead() ), SLOT( read() ) ); |
285 | connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) ); | 285 | connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) ); |
286 | 286 | ||
287 | passiv = FALSE; | 287 | passiv = FALSE; |
288 | for ( int i = 0; i < 4; i++ ) | 288 | for ( int i = 0; i < 4; i++ ) |
289 | wait[i] = FALSE; | 289 | wait[i] = FALSE; |
290 | 290 | ||
291 | send( "220 Qtopia " QPE_VERSION " FTP Server" ); | 291 | send( "220 Qtopia " QPE_VERSION " FTP Server" ); |
292 | state = Wait_USER; | 292 | state = Wait_USER; |
293 | 293 | ||
294 | dtp = new ServerDTP( this ); | 294 | dtp = new ServerDTP( this ); |
295 | connect( dtp, SIGNAL( completed() ), SLOT( dtpCompleted() ) ); | 295 | connect( dtp, SIGNAL( completed() ), SLOT( dtpCompleted() ) ); |
296 | connect( dtp, SIGNAL( failed() ), SLOT( dtpFailed() ) ); | 296 | connect( dtp, SIGNAL( failed() ), SLOT( dtpFailed() ) ); |
297 | connect( dtp, SIGNAL( error( int ) ), SLOT( dtpError( int ) ) ); | 297 | connect( dtp, SIGNAL( error(int) ), SLOT( dtpError(int) ) ); |
298 | 298 | ||
299 | 299 | ||
300 | directory = QDir::currentDirPath(); | 300 | directory = QDir::currentDirPath(); |
301 | 301 | ||
302 | static int p = 1024; | 302 | static int p = 1024; |
303 | 303 | ||
304 | while ( !serversocket || !serversocket->ok() ) { | 304 | while ( !serversocket || !serversocket->ok() ) { |
305 | delete serversocket; | 305 | delete serversocket; |
306 | serversocket = new ServerSocket( ++p, this ); | 306 | serversocket = new ServerSocket( ++p, this ); |
307 | } | 307 | } |
308 | connect( serversocket, SIGNAL( newIncomming( int ) ), | 308 | connect( serversocket, SIGNAL( newIncomming(int) ), |
309 | SLOT( newConnection( int ) ) ); | 309 | SLOT( newConnection(int) ) ); |
310 | } | 310 | } |
311 | } | 311 | } |
312 | 312 | ||
313 | ServerPI::~ServerPI() | 313 | ServerPI::~ServerPI() |
314 | { | 314 | { |
315 | } | 315 | } |
316 | 316 | ||
317 | void ServerPI::connectionClosed() | 317 | void ServerPI::connectionClosed() |
318 | { | 318 | { |
319 | // qDebug( "Debug: Connection closed" ); | 319 | // qDebug( "Debug: Connection closed" ); |
320 | delete this; | 320 | delete this; |
321 | } | 321 | } |
322 | 322 | ||
323 | void ServerPI::send( const QString& msg ) | 323 | void ServerPI::send( const QString& msg ) |
324 | { | 324 | { |
325 | QTextStream os( this ); | 325 | QTextStream os( this ); |
326 | os << msg << endl; | 326 | os << msg << endl; |
327 | //qDebug( "Reply: %s", msg.latin1() ); | 327 | //qDebug( "Reply: %s", msg.latin1() ); |
328 | } | 328 | } |
329 | 329 | ||
330 | void ServerPI::read() | 330 | void ServerPI::read() |
331 | { | 331 | { |
332 | while ( canReadLine() ) | 332 | while ( canReadLine() ) |
333 | process( readLine().stripWhiteSpace() ); | 333 | process( readLine().stripWhiteSpace() ); |
334 | } | 334 | } |
335 | 335 | ||
336 | bool ServerPI::checkReadFile( const QString& file ) | 336 | bool ServerPI::checkReadFile( const QString& file ) |
337 | { | 337 | { |
338 | QString filename; | 338 | QString filename; |
339 | 339 | ||
340 | if ( file[0] != "/" ) | 340 | if ( file[0] != "/" ) |
341 | filename = directory.path() + "/" + file; | 341 | filename = directory.path() + "/" + file; |
342 | else | 342 | else |
343 | filename = file; | 343 | filename = file; |
344 | 344 | ||
345 | QFileInfo fi( filename ); | 345 | QFileInfo fi( filename ); |
346 | return ( fi.exists() && fi.isReadable() ); | 346 | return ( fi.exists() && fi.isReadable() ); |
347 | } | 347 | } |
348 | 348 | ||
349 | bool ServerPI::checkWriteFile( const QString& file ) | 349 | bool ServerPI::checkWriteFile( const QString& file ) |
350 | { | 350 | { |
351 | QString filename; | 351 | QString filename; |
352 | 352 | ||
353 | if ( file[0] != "/" ) | 353 | if ( file[0] != "/" ) |
354 | filename = directory.path() + "/" + file; | 354 | filename = directory.path() + "/" + file; |
355 | else | 355 | else |
356 | filename = file; | 356 | filename = file; |
357 | 357 | ||
358 | QFileInfo fi( filename ); | 358 | QFileInfo fi( filename ); |
359 | 359 | ||
360 | if ( fi.exists() ) | 360 | if ( fi.exists() ) |
361 | if ( !QFile( filename ).remove() ) | 361 | if ( !QFile( filename ).remove() ) |
362 | return FALSE; | 362 | return FALSE; |
363 | return TRUE; | 363 | return TRUE; |
364 | } | 364 | } |
365 | 365 | ||
366 | void ServerPI::process( const QString& message ) | 366 | void ServerPI::process( const QString& message ) |
367 | { | 367 | { |
368 | //qDebug( "Command: %s", message.latin1() ); | 368 | //qDebug( "Command: %s", message.latin1() ); |
369 | 369 | ||
370 | // split message using "," as separator | 370 | // split message using "," as separator |
371 | QStringList msg = QStringList::split( " ", message ); | 371 | QStringList msg = QStringList::split( " ", message ); |
372 | if ( msg.isEmpty() ) | 372 | if ( msg.isEmpty() ) |
373 | return ; | 373 | return ; |
374 | 374 | ||
375 | // command token | 375 | // command token |
376 | QString cmd = msg[0].upper(); | 376 | QString cmd = msg[0].upper(); |
377 | 377 | ||
378 | // argument token | 378 | // argument token |
379 | QString arg; | 379 | QString arg; |
380 | if ( msg.count() >= 2 ) | 380 | if ( msg.count() >= 2 ) |
381 | arg = msg[1]; | 381 | arg = msg[1]; |
382 | 382 | ||
383 | // full argument string | 383 | // full argument string |
384 | QString args; | 384 | QString args; |
385 | if ( msg.count() >= 2 ) { | 385 | if ( msg.count() >= 2 ) { |
386 | QStringList copy( msg ); | 386 | QStringList copy( msg ); |
387 | // FIXME: for Qt3 | 387 | // FIXME: for Qt3 |
388 | // copy.pop_front() | 388 | // copy.pop_front() |
389 | copy.remove( copy.begin() ); | 389 | copy.remove( copy.begin() ); |
390 | args = copy.join( " " ); | 390 | args = copy.join( " " ); |
391 | } | 391 | } |
392 | 392 | ||
393 | //qDebug( "args: %s", args.latin1() ); | 393 | //qDebug( "args: %s", args.latin1() ); |
394 | 394 | ||
395 | // we always respond to QUIT, regardless of state | 395 | // we always respond to QUIT, regardless of state |
396 | if ( cmd == "QUIT" ) { | 396 | if ( cmd == "QUIT" ) { |
397 | send( "211 Good bye!" ); | 397 | send( "211 Good bye!" ); |
398 | delete this; | 398 | delete this; |
399 | return ; | 399 | return ; |
400 | } | 400 | } |
401 | 401 | ||
402 | // connected to client | 402 | // connected to client |
403 | if ( Connected == state ) | 403 | if ( Connected == state ) |
404 | return ; | 404 | return ; |
405 | 405 | ||
@@ -953,208 +953,208 @@ QString ServerPI::permissionString( QFileInfo *info ) | |||
953 | // group | 953 | // group |
954 | if ( info->permission( QFileInfo::ReadGroup ) ) | 954 | if ( info->permission( QFileInfo::ReadGroup ) ) |
955 | s += "r"; | 955 | s += "r"; |
956 | else | 956 | else |
957 | s += "-"; | 957 | s += "-"; |
958 | if ( info->permission( QFileInfo::WriteGroup ) ) | 958 | if ( info->permission( QFileInfo::WriteGroup ) ) |
959 | s += "w"; | 959 | s += "w"; |
960 | else | 960 | else |
961 | s += "-"; | 961 | s += "-"; |
962 | if ( info->permission( QFileInfo::ExeGroup ) ) | 962 | if ( info->permission( QFileInfo::ExeGroup ) ) |
963 | s += "x"; | 963 | s += "x"; |
964 | else | 964 | else |
965 | s += "-"; | 965 | s += "-"; |
966 | 966 | ||
967 | // exec | 967 | // exec |
968 | if ( info->permission( QFileInfo::ReadOther ) ) | 968 | if ( info->permission( QFileInfo::ReadOther ) ) |
969 | s += "r"; | 969 | s += "r"; |
970 | else | 970 | else |
971 | s += "-"; | 971 | s += "-"; |
972 | if ( info->permission( QFileInfo::WriteOther ) ) | 972 | if ( info->permission( QFileInfo::WriteOther ) ) |
973 | s += "w"; | 973 | s += "w"; |
974 | else | 974 | else |
975 | s += "-"; | 975 | s += "-"; |
976 | if ( info->permission( QFileInfo::ExeOther ) ) | 976 | if ( info->permission( QFileInfo::ExeOther ) ) |
977 | s += "x"; | 977 | s += "x"; |
978 | else | 978 | else |
979 | s += "-"; | 979 | s += "-"; |
980 | 980 | ||
981 | return s; | 981 | return s; |
982 | } | 982 | } |
983 | 983 | ||
984 | void ServerPI::newConnection( int socket ) | 984 | void ServerPI::newConnection( int socket ) |
985 | { | 985 | { |
986 | //qDebug( "New incomming connection" ); | 986 | //qDebug( "New incomming connection" ); |
987 | 987 | ||
988 | if ( !passiv ) | 988 | if ( !passiv ) |
989 | return ; | 989 | return ; |
990 | 990 | ||
991 | if ( wait[SendFile] ) { | 991 | if ( wait[SendFile] ) { |
992 | QStringList targets; | 992 | QStringList targets; |
993 | if ( backupRestoreGzip( waitfile, targets ) ) | 993 | if ( backupRestoreGzip( waitfile, targets ) ) |
994 | dtp->sendGzipFile( waitfile, targets ); | 994 | dtp->sendGzipFile( waitfile, targets ); |
995 | else | 995 | else |
996 | dtp->sendFile( waitfile ); | 996 | dtp->sendFile( waitfile ); |
997 | dtp->setSocket( socket ); | 997 | dtp->setSocket( socket ); |
998 | } | 998 | } |
999 | else if ( wait[RetrieveFile] ) { | 999 | else if ( wait[RetrieveFile] ) { |
1000 | qDebug("check retrieve file"); | 1000 | qDebug("check retrieve file"); |
1001 | if ( backupRestoreGzip( waitfile ) ) | 1001 | if ( backupRestoreGzip( waitfile ) ) |
1002 | dtp->retrieveGzipFile( waitfile ); | 1002 | dtp->retrieveGzipFile( waitfile ); |
1003 | else | 1003 | else |
1004 | dtp->retrieveFile( waitfile ); | 1004 | dtp->retrieveFile( waitfile ); |
1005 | dtp->setSocket( socket ); | 1005 | dtp->setSocket( socket ); |
1006 | } | 1006 | } |
1007 | else if ( wait[SendByteArray] ) { | 1007 | else if ( wait[SendByteArray] ) { |
1008 | dtp->sendByteArray( waitarray ); | 1008 | dtp->sendByteArray( waitarray ); |
1009 | dtp->setSocket( socket ); | 1009 | dtp->setSocket( socket ); |
1010 | } | 1010 | } |
1011 | else if ( wait[RetrieveByteArray] ) { | 1011 | else if ( wait[RetrieveByteArray] ) { |
1012 | qDebug("retrieve byte array"); | 1012 | qDebug("retrieve byte array"); |
1013 | dtp->retrieveByteArray(); | 1013 | dtp->retrieveByteArray(); |
1014 | dtp->setSocket( socket ); | 1014 | dtp->setSocket( socket ); |
1015 | } | 1015 | } |
1016 | else | 1016 | else |
1017 | waitsocket = socket; | 1017 | waitsocket = socket; |
1018 | 1018 | ||
1019 | for ( int i = 0; i < 4; i++ ) | 1019 | for ( int i = 0; i < 4; i++ ) |
1020 | wait[i] = FALSE; | 1020 | wait[i] = FALSE; |
1021 | } | 1021 | } |
1022 | 1022 | ||
1023 | QString ServerPI::absFilePath( const QString& file ) | 1023 | QString ServerPI::absFilePath( const QString& file ) |
1024 | { | 1024 | { |
1025 | if ( file.isEmpty() ) | 1025 | if ( file.isEmpty() ) |
1026 | return file; | 1026 | return file; |
1027 | 1027 | ||
1028 | QString filepath( file ); | 1028 | QString filepath( file ); |
1029 | if ( file[0] != "/" ) | 1029 | if ( file[0] != "/" ) |
1030 | filepath = directory.path() + "/" + file; | 1030 | filepath = directory.path() + "/" + file; |
1031 | 1031 | ||
1032 | return filepath; | 1032 | return filepath; |
1033 | } | 1033 | } |
1034 | 1034 | ||
1035 | 1035 | ||
1036 | void ServerPI::timerEvent( QTimerEvent * ) | 1036 | void ServerPI::timerEvent( QTimerEvent * ) |
1037 | { | 1037 | { |
1038 | connectionClosed(); | 1038 | connectionClosed(); |
1039 | } | 1039 | } |
1040 | 1040 | ||
1041 | 1041 | ||
1042 | ServerDTP::ServerDTP( QObject *parent, const char* name) | 1042 | ServerDTP::ServerDTP( QObject *parent, const char* name) |
1043 | : QSocket( parent, name ), mode( Idle ), createTargzProc( 0 ), | 1043 | : QSocket( parent, name ), mode( Idle ), createTargzProc( 0 ), |
1044 | retrieveTargzProc( 0 ), gzipProc( 0 ) | 1044 | retrieveTargzProc( 0 ), gzipProc( 0 ) |
1045 | { | 1045 | { |
1046 | 1046 | ||
1047 | connect( this, SIGNAL( connected() ), SLOT( connected() ) ); | 1047 | connect( this, SIGNAL( connected() ), SLOT( connected() ) ); |
1048 | connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) ); | 1048 | connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) ); |
1049 | connect( this, SIGNAL( bytesWritten( int ) ), SLOT( bytesWritten( int ) ) ); | 1049 | connect( this, SIGNAL( bytesWritten(int) ), SLOT( bytesWritten(int) ) ); |
1050 | connect( this, SIGNAL( readyRead() ), SLOT( readyRead() ) ); | 1050 | connect( this, SIGNAL( readyRead() ), SLOT( readyRead() ) ); |
1051 | 1051 | ||
1052 | gzipProc = new OProcess( this, "gzipProc" ); | 1052 | gzipProc = new OProcess( this, "gzipProc" ); |
1053 | 1053 | ||
1054 | createTargzProc = new OProcess( QString("tar"), this, "createTargzProc"); | 1054 | createTargzProc = new OProcess( QString("tar"), this, "createTargzProc"); |
1055 | createTargzProc->setWorkingDirectory( QDir::rootDirPath() ); | 1055 | createTargzProc->setWorkingDirectory( QDir::rootDirPath() ); |
1056 | connect( createTargzProc, SIGNAL( processExited(OProcess *) ), SLOT( targzDone() ) ); | 1056 | connect( createTargzProc, SIGNAL( processExited(OProcess*) ), SLOT( targzDone() ) ); |
1057 | 1057 | ||
1058 | QStringList args = "tar"; | 1058 | QStringList args = "tar"; |
1059 | args += "-xv"; | 1059 | args += "-xv"; |
1060 | retrieveTargzProc = new OProcess( args, this, "retrieveTargzProc" ); | 1060 | retrieveTargzProc = new OProcess( args, this, "retrieveTargzProc" ); |
1061 | retrieveTargzProc->setWorkingDirectory( QDir::rootDirPath() ); | 1061 | retrieveTargzProc->setWorkingDirectory( QDir::rootDirPath() ); |
1062 | connect( retrieveTargzProc, SIGNAL( processExited(OProcess *) ), | 1062 | connect( retrieveTargzProc, SIGNAL( processExited(OProcess*) ), |
1063 | SIGNAL( completed() ) ); | 1063 | SIGNAL( completed() ) ); |
1064 | connect( retrieveTargzProc, SIGNAL( processExited(OProcess *) ), | 1064 | connect( retrieveTargzProc, SIGNAL( processExited(OProcess*) ), |
1065 | SLOT( extractTarDone() ) ); | 1065 | SLOT( extractTarDone() ) ); |
1066 | } | 1066 | } |
1067 | 1067 | ||
1068 | ServerDTP::~ServerDTP() | 1068 | ServerDTP::~ServerDTP() |
1069 | { | 1069 | { |
1070 | buf.close(); | 1070 | buf.close(); |
1071 | file.close(); | 1071 | file.close(); |
1072 | createTargzProc->kill(); | 1072 | createTargzProc->kill(); |
1073 | } | 1073 | } |
1074 | 1074 | ||
1075 | void ServerDTP::extractTarDone() | 1075 | void ServerDTP::extractTarDone() |
1076 | { | 1076 | { |
1077 | qDebug("extract done"); | 1077 | qDebug("extract done"); |
1078 | #ifndef QT_NO_COP | 1078 | #ifndef QT_NO_COP |
1079 | 1079 | ||
1080 | QCopEnvelope e( "QPE/Desktop", "restoreDone(QString)" ); | 1080 | QCopEnvelope e( "QPE/Desktop", "restoreDone(QString)" ); |
1081 | e << file.name(); | 1081 | e << file.name(); |
1082 | #endif | 1082 | #endif |
1083 | } | 1083 | } |
1084 | 1084 | ||
1085 | void ServerDTP::connected() | 1085 | void ServerDTP::connected() |
1086 | { | 1086 | { |
1087 | // send file mode | 1087 | // send file mode |
1088 | switch ( mode ) { | 1088 | switch ( mode ) { |
1089 | case SendFile : | 1089 | case SendFile : |
1090 | if ( !file.exists() || !file.open( IO_ReadOnly) ) { | 1090 | if ( !file.exists() || !file.open( IO_ReadOnly) ) { |
1091 | emit failed(); | 1091 | emit failed(); |
1092 | mode = Idle; | 1092 | mode = Idle; |
1093 | return ; | 1093 | return ; |
1094 | } | 1094 | } |
1095 | 1095 | ||
1096 | //qDebug( "Debug: Sending file '%s'", file.name().latin1() ); | 1096 | //qDebug( "Debug: Sending file '%s'", file.name().latin1() ); |
1097 | 1097 | ||
1098 | bytes_written = 0; | 1098 | bytes_written = 0; |
1099 | if ( file.size() == 0 ) { | 1099 | if ( file.size() == 0 ) { |
1100 | //make sure it doesn't hang on empty files | 1100 | //make sure it doesn't hang on empty files |
1101 | file.close(); | 1101 | file.close(); |
1102 | emit completed(); | 1102 | emit completed(); |
1103 | mode = Idle; | 1103 | mode = Idle; |
1104 | } | 1104 | } |
1105 | else { | 1105 | else { |
1106 | 1106 | ||
1107 | if ( !file.atEnd() ) { | 1107 | if ( !file.atEnd() ) { |
1108 | QCString s; | 1108 | QCString s; |
1109 | s.resize( block_size ); | 1109 | s.resize( block_size ); |
1110 | int bytes = file.readBlock( s.data(), block_size ); | 1110 | int bytes = file.readBlock( s.data(), block_size ); |
1111 | writeBlock( s.data(), bytes ); | 1111 | writeBlock( s.data(), bytes ); |
1112 | } | 1112 | } |
1113 | } | 1113 | } |
1114 | break; | 1114 | break; |
1115 | case SendGzipFile: | 1115 | case SendGzipFile: |
1116 | if ( createTargzProc->isRunning() ) { | 1116 | if ( createTargzProc->isRunning() ) { |
1117 | // SHOULDN'T GET HERE, BUT DOING A SAFETY CHECK ANYWAY | 1117 | // SHOULDN'T GET HERE, BUT DOING A SAFETY CHECK ANYWAY |
1118 | qWarning("Previous tar --gzip process is still running; killing it..."); | 1118 | qWarning("Previous tar --gzip process is still running; killing it..."); |
1119 | createTargzProc->kill(); | 1119 | createTargzProc->kill(); |
1120 | } | 1120 | } |
1121 | 1121 | ||
1122 | bytes_written = 0; | 1122 | bytes_written = 0; |
1123 | qDebug("==>start send tar process"); | 1123 | qDebug("==>start send tar process"); |
1124 | if ( !createTargzProc->start(OProcess::NotifyOnExit, OProcess::Stdout) ) | 1124 | if ( !createTargzProc->start(OProcess::NotifyOnExit, OProcess::Stdout) ) |
1125 | qWarning("Error starting %s or %s", | 1125 | qWarning("Error starting %s or %s", |
1126 | createTargzProc->args()[0].data(), | 1126 | createTargzProc->args()[0].data(), |
1127 | gzipProc->args()[0].data()); | 1127 | gzipProc->args()[0].data()); |
1128 | break; | 1128 | break; |
1129 | case SendBuffer: | 1129 | case SendBuffer: |
1130 | if ( !buf.open( IO_ReadOnly) ) { | 1130 | if ( !buf.open( IO_ReadOnly) ) { |
1131 | emit failed(); | 1131 | emit failed(); |
1132 | mode = Idle; | 1132 | mode = Idle; |
1133 | return ; | 1133 | return ; |
1134 | } | 1134 | } |
1135 | 1135 | ||
1136 | // qDebug( "Debug: Sending byte array" ); | 1136 | // qDebug( "Debug: Sending byte array" ); |
1137 | bytes_written = 0; | 1137 | bytes_written = 0; |
1138 | while ( !buf.atEnd() ) | 1138 | while ( !buf.atEnd() ) |
1139 | putch( buf.getch() ); | 1139 | putch( buf.getch() ); |
1140 | buf.close(); | 1140 | buf.close(); |
1141 | break; | 1141 | break; |
1142 | case RetrieveFile: | 1142 | case RetrieveFile: |
1143 | // retrieve file mode | 1143 | // retrieve file mode |
1144 | if ( file.exists() && !file.remove() ) { | 1144 | if ( file.exists() && !file.remove() ) { |
1145 | emit failed(); | 1145 | emit failed(); |
1146 | mode = Idle; | 1146 | mode = Idle; |
1147 | return ; | 1147 | return ; |
1148 | } | 1148 | } |
1149 | 1149 | ||
1150 | if ( !file.open( IO_WriteOnly) ) { | 1150 | if ( !file.open( IO_WriteOnly) ) { |
1151 | emit failed(); | 1151 | emit failed(); |
1152 | mode = Idle; | 1152 | mode = Idle; |
1153 | return ; | 1153 | return ; |
1154 | } | 1154 | } |
1155 | // qDebug( "Debug: Retrieving file %s", file.name().latin1() ); | 1155 | // qDebug( "Debug: Retrieving file %s", file.name().latin1() ); |
1156 | break; | 1156 | break; |
1157 | case RetrieveGzipFile: | 1157 | case RetrieveGzipFile: |
1158 | qDebug("=-> starting tar process to receive .tgz file"); | 1158 | qDebug("=-> starting tar process to receive .tgz file"); |
1159 | break; | 1159 | break; |
1160 | case RetrieveBuffer: | 1160 | case RetrieveBuffer: |
@@ -1188,248 +1188,248 @@ void ServerDTP::connectionClosed() | |||
1188 | else if ( SendBuffer == mode ) { | 1188 | else if ( SendBuffer == mode ) { |
1189 | if ( bytes_written == buf.size() ) | 1189 | if ( bytes_written == buf.size() ) |
1190 | emit completed(); | 1190 | emit completed(); |
1191 | else | 1191 | else |
1192 | emit failed(); | 1192 | emit failed(); |
1193 | } | 1193 | } |
1194 | 1194 | ||
1195 | // retrieve file mode | 1195 | // retrieve file mode |
1196 | else if ( RetrieveFile == mode ) { | 1196 | else if ( RetrieveFile == mode ) { |
1197 | file.close(); | 1197 | file.close(); |
1198 | emit completed(); | 1198 | emit completed(); |
1199 | } | 1199 | } |
1200 | 1200 | ||
1201 | else if ( RetrieveGzipFile == mode ) { | 1201 | else if ( RetrieveGzipFile == mode ) { |
1202 | qDebug("Done writing ungzip file; closing input"); | 1202 | qDebug("Done writing ungzip file; closing input"); |
1203 | gzipProc->flushStdin(); | 1203 | gzipProc->flushStdin(); |
1204 | gzipProc->closeStdin(); | 1204 | gzipProc->closeStdin(); |
1205 | } | 1205 | } |
1206 | 1206 | ||
1207 | // retrieve buffer mode | 1207 | // retrieve buffer mode |
1208 | else if ( RetrieveBuffer == mode ) { | 1208 | else if ( RetrieveBuffer == mode ) { |
1209 | buf.close(); | 1209 | buf.close(); |
1210 | emit completed(); | 1210 | emit completed(); |
1211 | } | 1211 | } |
1212 | 1212 | ||
1213 | mode = Idle; | 1213 | mode = Idle; |
1214 | } | 1214 | } |
1215 | 1215 | ||
1216 | void ServerDTP::bytesWritten( int bytes ) | 1216 | void ServerDTP::bytesWritten( int bytes ) |
1217 | { | 1217 | { |
1218 | bytes_written += bytes; | 1218 | bytes_written += bytes; |
1219 | 1219 | ||
1220 | // send file mode | 1220 | // send file mode |
1221 | if ( SendFile == mode ) { | 1221 | if ( SendFile == mode ) { |
1222 | 1222 | ||
1223 | if ( bytes_written == file.size() ) { | 1223 | if ( bytes_written == file.size() ) { |
1224 | // qDebug( "Debug: Sending complete: %d bytes", file.size() ); | 1224 | // qDebug( "Debug: Sending complete: %d bytes", file.size() ); |
1225 | file.close(); | 1225 | file.close(); |
1226 | emit completed(); | 1226 | emit completed(); |
1227 | mode = Idle; | 1227 | mode = Idle; |
1228 | } | 1228 | } |
1229 | else if ( !file.atEnd() ) { | 1229 | else if ( !file.atEnd() ) { |
1230 | QCString s; | 1230 | QCString s; |
1231 | s.resize( block_size ); | 1231 | s.resize( block_size ); |
1232 | int bytes = file.readBlock( s.data(), block_size ); | 1232 | int bytes = file.readBlock( s.data(), block_size ); |
1233 | writeBlock( s.data(), bytes ); | 1233 | writeBlock( s.data(), bytes ); |
1234 | } | 1234 | } |
1235 | } | 1235 | } |
1236 | 1236 | ||
1237 | // send buffer mode | 1237 | // send buffer mode |
1238 | if ( SendBuffer == mode ) { | 1238 | if ( SendBuffer == mode ) { |
1239 | 1239 | ||
1240 | if ( bytes_written == buf.size() ) { | 1240 | if ( bytes_written == buf.size() ) { |
1241 | // qDebug( "Debug: Sending complete: %d bytes", buf.size() ); | 1241 | // qDebug( "Debug: Sending complete: %d bytes", buf.size() ); |
1242 | emit completed(); | 1242 | emit completed(); |
1243 | mode = Idle; | 1243 | mode = Idle; |
1244 | } | 1244 | } |
1245 | } | 1245 | } |
1246 | } | 1246 | } |
1247 | 1247 | ||
1248 | void ServerDTP::readyRead() | 1248 | void ServerDTP::readyRead() |
1249 | { | 1249 | { |
1250 | // retrieve file mode | 1250 | // retrieve file mode |
1251 | if ( RetrieveFile == mode ) { | 1251 | if ( RetrieveFile == mode ) { |
1252 | QCString s; | 1252 | QCString s; |
1253 | s.resize( bytesAvailable() ); | 1253 | s.resize( bytesAvailable() ); |
1254 | readBlock( s.data(), bytesAvailable() ); | 1254 | readBlock( s.data(), bytesAvailable() ); |
1255 | file.writeBlock( s.data(), s.size() ); | 1255 | file.writeBlock( s.data(), s.size() ); |
1256 | } | 1256 | } |
1257 | else if ( RetrieveGzipFile == mode ) { | 1257 | else if ( RetrieveGzipFile == mode ) { |
1258 | if ( !gzipProc->isRunning() ) | 1258 | if ( !gzipProc->isRunning() ) |
1259 | gzipProc->start(OProcess::NotifyOnExit, (OProcess::Communication) ( OProcess::Stdin | OProcess::Stdout )); | 1259 | gzipProc->start(OProcess::NotifyOnExit, (OProcess::Communication) ( OProcess::Stdin | OProcess::Stdout )); |
1260 | 1260 | ||
1261 | QByteArray s; | 1261 | QByteArray s; |
1262 | s.resize( bytesAvailable() ); | 1262 | s.resize( bytesAvailable() ); |
1263 | readBlock( s.data(), bytesAvailable() ); | 1263 | readBlock( s.data(), bytesAvailable() ); |
1264 | gzipProc->writeStdin( s.data(), s.size() ); | 1264 | gzipProc->writeStdin( s.data(), s.size() ); |
1265 | qDebug("wrote %d bytes to ungzip ", s.size() ); | 1265 | qDebug("wrote %d bytes to ungzip ", s.size() ); |
1266 | } | 1266 | } |
1267 | // retrieve buffer mode | 1267 | // retrieve buffer mode |
1268 | else if ( RetrieveBuffer == mode ) { | 1268 | else if ( RetrieveBuffer == mode ) { |
1269 | QCString s; | 1269 | QCString s; |
1270 | s.resize( bytesAvailable() ); | 1270 | s.resize( bytesAvailable() ); |
1271 | readBlock( s.data(), bytesAvailable() ); | 1271 | readBlock( s.data(), bytesAvailable() ); |
1272 | buf.writeBlock( s.data(), s.size() ); | 1272 | buf.writeBlock( s.data(), s.size() ); |
1273 | } | 1273 | } |
1274 | } | 1274 | } |
1275 | 1275 | ||
1276 | void ServerDTP::writeTargzBlock(OProcess *, char *buffer, int buflen) | 1276 | void ServerDTP::writeTargzBlock(OProcess *, char *buffer, int buflen) |
1277 | { | 1277 | { |
1278 | writeBlock( buffer, buflen ); | 1278 | writeBlock( buffer, buflen ); |
1279 | qDebug("writeTargzBlock %d", buflen); | 1279 | qDebug("writeTargzBlock %d", buflen); |
1280 | if ( !createTargzProc->isRunning() ) { | 1280 | if ( !createTargzProc->isRunning() ) { |
1281 | qDebug("tar and gzip done"); | 1281 | qDebug("tar and gzip done"); |
1282 | emit completed(); | 1282 | emit completed(); |
1283 | mode = Idle; | 1283 | mode = Idle; |
1284 | disconnect( gzipProc, SIGNAL( receivedStdout(OProcess *, char *, int ) ), | 1284 | disconnect( gzipProc, SIGNAL( receivedStdout(OProcess*,char*,int) ), |
1285 | this, SLOT( writeTargzBlock(OProcess *, char *, int) ) ); | 1285 | this, SLOT( writeTargzBlock(OProcess*,char*,int) ) ); |
1286 | } | 1286 | } |
1287 | } | 1287 | } |
1288 | 1288 | ||
1289 | void ServerDTP::targzDone() | 1289 | void ServerDTP::targzDone() |
1290 | { | 1290 | { |
1291 | //qDebug("targz done"); | 1291 | //qDebug("targz done"); |
1292 | disconnect( createTargzProc, SIGNAL( receivedStdout(OProcess *, char *, int) ), | 1292 | disconnect( createTargzProc, SIGNAL( receivedStdout(OProcess*,char*,int) ), |
1293 | this, SLOT( gzipTarBlock(OProcess *, char *, int) ) ); | 1293 | this, SLOT( gzipTarBlock(OProcess*,char*,int) ) ); |
1294 | gzipProc->closeStdin(); | 1294 | gzipProc->closeStdin(); |
1295 | } | 1295 | } |
1296 | 1296 | ||
1297 | void ServerDTP::gzipTarBlock(OProcess *, char *buffer, int buflen) | 1297 | void ServerDTP::gzipTarBlock(OProcess *, char *buffer, int buflen) |
1298 | { | 1298 | { |
1299 | //qDebug("gzipTarBlock"); | 1299 | //qDebug("gzipTarBlock"); |
1300 | if ( !gzipProc->isRunning() ) { | 1300 | if ( !gzipProc->isRunning() ) { |
1301 | //qDebug("auto start gzip proc"); | 1301 | //qDebug("auto start gzip proc"); |
1302 | gzipProc->start(OProcess::NotifyOnExit, (OProcess::Communication) ( OProcess::Stdin | OProcess::Stdout )); | 1302 | gzipProc->start(OProcess::NotifyOnExit, (OProcess::Communication) ( OProcess::Stdin | OProcess::Stdout )); |
1303 | } | 1303 | } |
1304 | gzipProc->writeStdin( buffer, buflen ); | 1304 | gzipProc->writeStdin( buffer, buflen ); |
1305 | } | 1305 | } |
1306 | 1306 | ||
1307 | void ServerDTP::sendFile( const QString fn, const QHostAddress& host, Q_UINT16 port ) | 1307 | void ServerDTP::sendFile( const QString fn, const QHostAddress& host, Q_UINT16 port ) |
1308 | { | 1308 | { |
1309 | file.setName( fn ); | 1309 | file.setName( fn ); |
1310 | mode = SendFile; | 1310 | mode = SendFile; |
1311 | connectToHost( host.toString(), port ); | 1311 | connectToHost( host.toString(), port ); |
1312 | } | 1312 | } |
1313 | 1313 | ||
1314 | void ServerDTP::sendFile( const QString fn ) | 1314 | void ServerDTP::sendFile( const QString fn ) |
1315 | { | 1315 | { |
1316 | file.setName( fn ); | 1316 | file.setName( fn ); |
1317 | mode = SendFile; | 1317 | mode = SendFile; |
1318 | } | 1318 | } |
1319 | 1319 | ||
1320 | void ServerDTP::sendGzipFile( const QString &fn, | 1320 | void ServerDTP::sendGzipFile( const QString &fn, |
1321 | const QStringList &archiveTargets, | 1321 | const QStringList &archiveTargets, |
1322 | const QHostAddress& host, Q_UINT16 port ) | 1322 | const QHostAddress& host, Q_UINT16 port ) |
1323 | { | 1323 | { |
1324 | sendGzipFile( fn, archiveTargets ); | 1324 | sendGzipFile( fn, archiveTargets ); |
1325 | connectToHost( host.toString(), port ); | 1325 | connectToHost( host.toString(), port ); |
1326 | } | 1326 | } |
1327 | 1327 | ||
1328 | void ServerDTP::sendGzipFile( const QString &fn, | 1328 | void ServerDTP::sendGzipFile( const QString &fn, |
1329 | const QStringList &archiveTargets ) | 1329 | const QStringList &archiveTargets ) |
1330 | { | 1330 | { |
1331 | mode = SendGzipFile; | 1331 | mode = SendGzipFile; |
1332 | file.setName( fn ); | 1332 | file.setName( fn ); |
1333 | 1333 | ||
1334 | QStringList args = "tar"; | 1334 | QStringList args = "tar"; |
1335 | args += "-cv"; | 1335 | args += "-cv"; |
1336 | args += archiveTargets; | 1336 | args += archiveTargets; |
1337 | qDebug("sendGzipFile %s", args.join(" ").latin1() ); | 1337 | qDebug("sendGzipFile %s", args.join(" ").latin1() ); |
1338 | createTargzProc->clearArguments( ); | 1338 | createTargzProc->clearArguments( ); |
1339 | *createTargzProc << args; | 1339 | *createTargzProc << args; |
1340 | connect( createTargzProc, | 1340 | connect( createTargzProc, |
1341 | SIGNAL( receivedStdout(OProcess *, char *, int) ), SLOT( gzipTarBlock(OProcess *, char *, int) ) ); | 1341 | SIGNAL( receivedStdout(OProcess*,char*,int) ), SLOT( gzipTarBlock(OProcess*,char*,int) ) ); |
1342 | 1342 | ||
1343 | gzipProc->clearArguments( ); | 1343 | gzipProc->clearArguments( ); |
1344 | *gzipProc << "gzip"; | 1344 | *gzipProc << "gzip"; |
1345 | connect( gzipProc, SIGNAL( receivedStdout(OProcess *, char *, int) ), | 1345 | connect( gzipProc, SIGNAL( receivedStdout(OProcess*,char*,int) ), |
1346 | SLOT( writeTargzBlock(OProcess *, char *, int) ) ); | 1346 | SLOT( writeTargzBlock(OProcess*,char*,int) ) ); |
1347 | } | 1347 | } |
1348 | 1348 | ||
1349 | void ServerDTP::gunzipDone() | 1349 | void ServerDTP::gunzipDone() |
1350 | { | 1350 | { |
1351 | qDebug("gunzipDone"); | 1351 | qDebug("gunzipDone"); |
1352 | disconnect( gzipProc, SIGNAL( processExited() ), | 1352 | disconnect( gzipProc, SIGNAL( processExited() ), |
1353 | this, SLOT( gunzipDone() ) ); | 1353 | this, SLOT( gunzipDone() ) ); |
1354 | retrieveTargzProc->closeStdin(); | 1354 | retrieveTargzProc->closeStdin(); |
1355 | disconnect( gzipProc, SIGNAL( receivedStdout(OProcess *, char *, int) ), | 1355 | disconnect( gzipProc, SIGNAL( receivedStdout(OProcess*,char*,int) ), |
1356 | this, SLOT( tarExtractBlock(OProcess *, char *, int) ) ); | 1356 | this, SLOT( tarExtractBlock(OProcess*,char*,int) ) ); |
1357 | } | 1357 | } |
1358 | 1358 | ||
1359 | void ServerDTP::tarExtractBlock(OProcess *, char *buffer, int buflen) | 1359 | void ServerDTP::tarExtractBlock(OProcess *, char *buffer, int buflen) |
1360 | { | 1360 | { |
1361 | qDebug("tarExtractBlock"); | 1361 | qDebug("tarExtractBlock"); |
1362 | if ( !retrieveTargzProc->isRunning() ) { | 1362 | if ( !retrieveTargzProc->isRunning() ) { |
1363 | qDebug("auto start ungzip proc"); | 1363 | qDebug("auto start ungzip proc"); |
1364 | if ( !retrieveTargzProc->start(OProcess::NotifyOnExit, OProcess::Stdin) ) | 1364 | if ( !retrieveTargzProc->start(OProcess::NotifyOnExit, OProcess::Stdin) ) |
1365 | qWarning(" failed to start tar -x process"); | 1365 | qWarning(" failed to start tar -x process"); |
1366 | } | 1366 | } |
1367 | retrieveTargzProc->writeStdin( buffer, buflen ); | 1367 | retrieveTargzProc->writeStdin( buffer, buflen ); |
1368 | } | 1368 | } |
1369 | 1369 | ||
1370 | 1370 | ||
1371 | void ServerDTP::retrieveFile( const QString fn, const QHostAddress& host, Q_UINT16 port ) | 1371 | void ServerDTP::retrieveFile( const QString fn, const QHostAddress& host, Q_UINT16 port ) |
1372 | { | 1372 | { |
1373 | file.setName( fn ); | 1373 | file.setName( fn ); |
1374 | mode = RetrieveFile; | 1374 | mode = RetrieveFile; |
1375 | connectToHost( host.toString(), port ); | 1375 | connectToHost( host.toString(), port ); |
1376 | } | 1376 | } |
1377 | 1377 | ||
1378 | void ServerDTP::retrieveFile( const QString fn ) | 1378 | void ServerDTP::retrieveFile( const QString fn ) |
1379 | { | 1379 | { |
1380 | file.setName( fn ); | 1380 | file.setName( fn ); |
1381 | mode = RetrieveFile; | 1381 | mode = RetrieveFile; |
1382 | } | 1382 | } |
1383 | 1383 | ||
1384 | void ServerDTP::retrieveGzipFile( const QString &fn ) | 1384 | void ServerDTP::retrieveGzipFile( const QString &fn ) |
1385 | { | 1385 | { |
1386 | qDebug("retrieveGzipFile %s", fn.latin1()); | 1386 | qDebug("retrieveGzipFile %s", fn.latin1()); |
1387 | file.setName( fn ); | 1387 | file.setName( fn ); |
1388 | mode = RetrieveGzipFile; | 1388 | mode = RetrieveGzipFile; |
1389 | 1389 | ||
1390 | gzipProc->clearArguments(); | 1390 | gzipProc->clearArguments(); |
1391 | *gzipProc << "gunzip"; | 1391 | *gzipProc << "gunzip"; |
1392 | connect( gzipProc, SIGNAL( readyReadStdout() ), | 1392 | connect( gzipProc, SIGNAL( readyReadStdout() ), |
1393 | SLOT( tarExtractBlock() ) ); | 1393 | SLOT( tarExtractBlock() ) ); |
1394 | connect( gzipProc, SIGNAL( processExited() ), | 1394 | connect( gzipProc, SIGNAL( processExited() ), |
1395 | SLOT( gunzipDone() ) ); | 1395 | SLOT( gunzipDone() ) ); |
1396 | } | 1396 | } |
1397 | 1397 | ||
1398 | void ServerDTP::retrieveGzipFile( const QString &fn, const QHostAddress& host, Q_UINT16 port ) | 1398 | void ServerDTP::retrieveGzipFile( const QString &fn, const QHostAddress& host, Q_UINT16 port ) |
1399 | { | 1399 | { |
1400 | retrieveGzipFile( fn ); | 1400 | retrieveGzipFile( fn ); |
1401 | connectToHost( host.toString(), port ); | 1401 | connectToHost( host.toString(), port ); |
1402 | } | 1402 | } |
1403 | 1403 | ||
1404 | void ServerDTP::sendByteArray( const QByteArray& array, const QHostAddress& host, Q_UINT16 port ) | 1404 | void ServerDTP::sendByteArray( const QByteArray& array, const QHostAddress& host, Q_UINT16 port ) |
1405 | { | 1405 | { |
1406 | buf.setBuffer( array ); | 1406 | buf.setBuffer( array ); |
1407 | mode = SendBuffer; | 1407 | mode = SendBuffer; |
1408 | connectToHost( host.toString(), port ); | 1408 | connectToHost( host.toString(), port ); |
1409 | } | 1409 | } |
1410 | 1410 | ||
1411 | void ServerDTP::sendByteArray( const QByteArray& array ) | 1411 | void ServerDTP::sendByteArray( const QByteArray& array ) |
1412 | { | 1412 | { |
1413 | buf.setBuffer( array ); | 1413 | buf.setBuffer( array ); |
1414 | mode = SendBuffer; | 1414 | mode = SendBuffer; |
1415 | } | 1415 | } |
1416 | 1416 | ||
1417 | void ServerDTP::retrieveByteArray( const QHostAddress& host, Q_UINT16 port ) | 1417 | void ServerDTP::retrieveByteArray( const QHostAddress& host, Q_UINT16 port ) |
1418 | { | 1418 | { |
1419 | buf.setBuffer( QByteArray() ); | 1419 | buf.setBuffer( QByteArray() ); |
1420 | mode = RetrieveBuffer; | 1420 | mode = RetrieveBuffer; |
1421 | connectToHost( host.toString(), port ); | 1421 | connectToHost( host.toString(), port ); |
1422 | } | 1422 | } |
1423 | 1423 | ||
1424 | void ServerDTP::retrieveByteArray() | 1424 | void ServerDTP::retrieveByteArray() |
1425 | { | 1425 | { |
1426 | buf.setBuffer( QByteArray() ); | 1426 | buf.setBuffer( QByteArray() ); |
1427 | mode = RetrieveBuffer; | 1427 | mode = RetrieveBuffer; |
1428 | } | 1428 | } |
1429 | 1429 | ||
1430 | void ServerDTP::setSocket( int socket ) | 1430 | void ServerDTP::setSocket( int socket ) |
1431 | { | 1431 | { |
1432 | QSocket::setSocket( socket ); | 1432 | QSocket::setSocket( socket ); |
1433 | connected(); | 1433 | connected(); |
1434 | } | 1434 | } |
1435 | 1435 | ||
diff --git a/core/settings/button/buttonsettings.cpp b/core/settings/button/buttonsettings.cpp index 141e0f6..d80e496 100644 --- a/core/settings/button/buttonsettings.cpp +++ b/core/settings/button/buttonsettings.cpp | |||
@@ -43,193 +43,193 @@ struct buttoninfo { | |||
43 | int m_index; | 43 | int m_index; |
44 | 44 | ||
45 | OQCopMessage m_pmsg; | 45 | OQCopMessage m_pmsg; |
46 | QLabel *m_picon; | 46 | QLabel *m_picon; |
47 | QLabel *m_plabel; | 47 | QLabel *m_plabel; |
48 | 48 | ||
49 | OQCopMessage m_hmsg; | 49 | OQCopMessage m_hmsg; |
50 | QLabel *m_hicon; | 50 | QLabel *m_hicon; |
51 | QLabel *m_hlabel; | 51 | QLabel *m_hlabel; |
52 | 52 | ||
53 | bool m_pdirty : 1; | 53 | bool m_pdirty : 1; |
54 | bool m_hdirty : 1; | 54 | bool m_hdirty : 1; |
55 | }; | 55 | }; |
56 | 56 | ||
57 | 57 | ||
58 | ButtonSettings::ButtonSettings ( QWidget *parent , const char *name, bool modal, WFlags f ) | 58 | ButtonSettings::ButtonSettings ( QWidget *parent , const char *name, bool modal, WFlags f ) |
59 | : QDialog ( 0, "ButtonSettings", false, WStyle_ContextHelp ) | 59 | : QDialog ( 0, "ButtonSettings", false, WStyle_ContextHelp ) |
60 | { | 60 | { |
61 | const QValueList <ODeviceButton> &buttons = ODevice::inst ( )-> buttons ( ); | 61 | const QValueList <ODeviceButton> &buttons = ODevice::inst ( )-> buttons ( ); |
62 | (void) ButtonUtils::inst ( ); // initialise | 62 | (void) ButtonUtils::inst ( ); // initialise |
63 | 63 | ||
64 | setCaption ( tr( "Button Settings" )); | 64 | setCaption ( tr( "Button Settings" )); |
65 | 65 | ||
66 | QVBoxLayout *toplay = new QVBoxLayout ( this, 3, 3 ); | 66 | QVBoxLayout *toplay = new QVBoxLayout ( this, 3, 3 ); |
67 | 67 | ||
68 | QLabel *l = new QLabel ( tr( "<center>Press or hold the button you want to remap.</center>" ), this ); | 68 | QLabel *l = new QLabel ( tr( "<center>Press or hold the button you want to remap.</center>" ), this ); |
69 | toplay-> addWidget ( l ); | 69 | toplay-> addWidget ( l ); |
70 | 70 | ||
71 | QGridLayout *lay = new QGridLayout ( toplay ); | 71 | QGridLayout *lay = new QGridLayout ( toplay ); |
72 | lay-> setMargin ( 0 ); | 72 | lay-> setMargin ( 0 ); |
73 | lay-> setColStretch ( 0, 0 ); | 73 | lay-> setColStretch ( 0, 0 ); |
74 | lay-> setColStretch ( 1, 0 ); | 74 | lay-> setColStretch ( 1, 0 ); |
75 | lay-> setColStretch ( 2, 0 ); | 75 | lay-> setColStretch ( 2, 0 ); |
76 | lay-> setColStretch ( 3, 10 ); | 76 | lay-> setColStretch ( 3, 10 ); |
77 | 77 | ||
78 | m_infos. setAutoDelete ( true ); | 78 | m_infos. setAutoDelete ( true ); |
79 | 79 | ||
80 | int i = 1; | 80 | int i = 1; |
81 | int index = 0; | 81 | int index = 0; |
82 | for ( QValueList<ODeviceButton>::ConstIterator it = buttons. begin ( ); it != buttons. end ( ); it++ ) { | 82 | for ( QValueList<ODeviceButton>::ConstIterator it = buttons. begin ( ); it != buttons. end ( ); it++ ) { |
83 | if ( it != buttons. begin ( )) { | 83 | if ( it != buttons. begin ( )) { |
84 | QFrame *f = new QFrame ( this ); | 84 | QFrame *f = new QFrame ( this ); |
85 | f-> setFrameStyle ( QFrame::Sunken | QFrame::VLine ); | 85 | f-> setFrameStyle ( QFrame::Sunken | QFrame::VLine ); |
86 | lay-> addMultiCellWidget ( f, i, i, 0, 3 ); | 86 | lay-> addMultiCellWidget ( f, i, i, 0, 3 ); |
87 | i++; | 87 | i++; |
88 | } | 88 | } |
89 | 89 | ||
90 | buttoninfo *bi = new buttoninfo ( ); | 90 | buttoninfo *bi = new buttoninfo ( ); |
91 | bi-> m_button = &(*it); | 91 | bi-> m_button = &(*it); |
92 | bi-> m_index = index++; | 92 | bi-> m_index = index++; |
93 | bi-> m_pmsg = (*it). pressedAction ( ); | 93 | bi-> m_pmsg = (*it). pressedAction ( ); |
94 | bi-> m_hmsg = (*it). heldAction ( ); | 94 | bi-> m_hmsg = (*it). heldAction ( ); |
95 | bi-> m_pdirty = false; | 95 | bi-> m_pdirty = false; |
96 | bi-> m_hdirty = false; | 96 | bi-> m_hdirty = false; |
97 | 97 | ||
98 | l = new QLabel ( this ); | 98 | l = new QLabel ( this ); |
99 | l-> setPixmap (( *it ). pixmap ( )); | 99 | l-> setPixmap (( *it ). pixmap ( )); |
100 | 100 | ||
101 | lay-> addMultiCellWidget ( l, i, i + 1, 0, 0 ); | 101 | lay-> addMultiCellWidget ( l, i, i + 1, 0, 0 ); |
102 | 102 | ||
103 | l = new QLabel ( tr( "Press:" ), this ); | 103 | l = new QLabel ( tr( "Press:" ), this ); |
104 | lay-> addWidget ( l, i, 1, AlignLeft | AlignBottom ); | 104 | lay-> addWidget ( l, i, 1, AlignLeft | AlignBottom ); |
105 | l = new QLabel ( tr( "Hold:" ), this ); | 105 | l = new QLabel ( tr( "Hold:" ), this ); |
106 | lay-> addWidget ( l, i + 1, 1, AlignLeft | AlignTop ); | 106 | lay-> addWidget ( l, i + 1, 1, AlignLeft | AlignTop ); |
107 | 107 | ||
108 | l = new QLabel ( this ); | 108 | l = new QLabel ( this ); |
109 | l-> setFixedSize ( 16, 16 ); | 109 | l-> setFixedSize ( 16, 16 ); |
110 | lay-> addWidget ( l, i, 2, AlignLeft | AlignBottom ); | 110 | lay-> addWidget ( l, i, 2, AlignLeft | AlignBottom ); |
111 | bi-> m_picon = l; | 111 | bi-> m_picon = l; |
112 | 112 | ||
113 | l = new QLabel ( this ); | 113 | l = new QLabel ( this ); |
114 | l-> setAlignment ( AlignLeft | AlignVCenter | SingleLine ); | 114 | l-> setAlignment ( AlignLeft | AlignVCenter | SingleLine ); |
115 | lay-> addWidget ( l, i, 3, AlignLeft | AlignBottom ); | 115 | lay-> addWidget ( l, i, 3, AlignLeft | AlignBottom ); |
116 | bi-> m_plabel = l; | 116 | bi-> m_plabel = l; |
117 | 117 | ||
118 | l = new QLabel ( this ); | 118 | l = new QLabel ( this ); |
119 | l-> setFixedSize ( 16, 16 ); | 119 | l-> setFixedSize ( 16, 16 ); |
120 | lay-> addWidget ( l, i + 1, 2, AlignLeft | AlignTop ); | 120 | lay-> addWidget ( l, i + 1, 2, AlignLeft | AlignTop ); |
121 | bi-> m_hicon = l; | 121 | bi-> m_hicon = l; |
122 | 122 | ||
123 | l = new QLabel ( this ); | 123 | l = new QLabel ( this ); |
124 | l-> setAlignment ( AlignLeft | AlignVCenter | SingleLine ); | 124 | l-> setAlignment ( AlignLeft | AlignVCenter | SingleLine ); |
125 | lay-> addWidget ( l, i + 1, 3, AlignLeft | AlignTop ); | 125 | lay-> addWidget ( l, i + 1, 3, AlignLeft | AlignTop ); |
126 | bi-> m_hlabel = l; | 126 | bi-> m_hlabel = l; |
127 | 127 | ||
128 | i += 2; | 128 | i += 2; |
129 | 129 | ||
130 | m_infos. append ( bi ); | 130 | m_infos. append ( bi ); |
131 | } | 131 | } |
132 | 132 | ||
133 | toplay-> addStretch ( 10 ); | 133 | toplay-> addStretch ( 10 ); |
134 | 134 | ||
135 | m_last_button = 0; | 135 | m_last_button = 0; |
136 | m_lock = false; | 136 | m_lock = false; |
137 | 137 | ||
138 | m_timer = new QTimer ( this ); | 138 | m_timer = new QTimer ( this ); |
139 | connect ( m_timer, SIGNAL( timeout ( )), this, SLOT( keyTimeout ( ))); | 139 | connect ( m_timer, SIGNAL( timeout()), this, SLOT( keyTimeout())); |
140 | 140 | ||
141 | updateLabels ( ); | 141 | updateLabels ( ); |
142 | 142 | ||
143 | QPEApplication::grabKeyboard ( ); | 143 | QPEApplication::grabKeyboard ( ); |
144 | } | 144 | } |
145 | 145 | ||
146 | ButtonSettings::~ButtonSettings ( ) | 146 | ButtonSettings::~ButtonSettings ( ) |
147 | { | 147 | { |
148 | QPEApplication::ungrabKeyboard ( ); | 148 | QPEApplication::ungrabKeyboard ( ); |
149 | } | 149 | } |
150 | 150 | ||
151 | void ButtonSettings::updateLabels ( ) | 151 | void ButtonSettings::updateLabels ( ) |
152 | { | 152 | { |
153 | for ( QListIterator <buttoninfo> it ( m_infos ); *it; ++it ) { | 153 | for ( QListIterator <buttoninfo> it ( m_infos ); *it; ++it ) { |
154 | qCopInfo cip = ButtonUtils::inst ( )-> messageToInfo ((*it)-> m_pmsg ); | 154 | qCopInfo cip = ButtonUtils::inst ( )-> messageToInfo ((*it)-> m_pmsg ); |
155 | 155 | ||
156 | (*it)-> m_picon-> setPixmap ( cip. m_icon ); | 156 | (*it)-> m_picon-> setPixmap ( cip. m_icon ); |
157 | (*it)-> m_plabel-> setText ( cip. m_name ); | 157 | (*it)-> m_plabel-> setText ( cip. m_name ); |
158 | 158 | ||
159 | qCopInfo cih = ButtonUtils::inst ( )-> messageToInfo ((*it)-> m_hmsg ); | 159 | qCopInfo cih = ButtonUtils::inst ( )-> messageToInfo ((*it)-> m_hmsg ); |
160 | 160 | ||
161 | (*it)-> m_hicon-> setPixmap ( cih. m_icon ); | 161 | (*it)-> m_hicon-> setPixmap ( cih. m_icon ); |
162 | (*it)-> m_hlabel-> setText ( cih. m_name ); | 162 | (*it)-> m_hlabel-> setText ( cih. m_name ); |
163 | } | 163 | } |
164 | } | 164 | } |
165 | 165 | ||
166 | buttoninfo *ButtonSettings::buttonInfoForKeycode ( ushort key ) | 166 | buttoninfo *ButtonSettings::buttonInfoForKeycode ( ushort key ) |
167 | { | 167 | { |
168 | for ( QListIterator <buttoninfo> it ( m_infos ); *it; ++it ) { | 168 | for ( QListIterator <buttoninfo> it ( m_infos ); *it; ++it ) { |
169 | if ((*it)-> m_button-> keycode ( ) == key ) | 169 | if ((*it)-> m_button-> keycode ( ) == key ) |
170 | return *it; | 170 | return *it; |
171 | } | 171 | } |
172 | return 0; | 172 | return 0; |
173 | } | 173 | } |
174 | 174 | ||
175 | void ButtonSettings::keyPressEvent ( QKeyEvent *e ) | 175 | void ButtonSettings::keyPressEvent ( QKeyEvent *e ) |
176 | { | 176 | { |
177 | buttoninfo *bi = buttonInfoForKeycode ( e-> key ( )); | 177 | buttoninfo *bi = buttonInfoForKeycode ( e-> key ( )); |
178 | 178 | ||
179 | if ( bi && !e-> isAutoRepeat ( )) { | 179 | if ( bi && !e-> isAutoRepeat ( )) { |
180 | m_timer-> stop ( ); | 180 | m_timer-> stop ( ); |
181 | m_last_button = bi; | 181 | m_last_button = bi; |
182 | m_timer-> start ( ODevice::inst ( )-> buttonHoldTime ( ), true ); | 182 | m_timer-> start ( ODevice::inst ( )-> buttonHoldTime ( ), true ); |
183 | } | 183 | } |
184 | else | 184 | else |
185 | QDialog::keyPressEvent ( e ); | 185 | QDialog::keyPressEvent ( e ); |
186 | } | 186 | } |
187 | 187 | ||
188 | void ButtonSettings::keyReleaseEvent ( QKeyEvent *e ) | 188 | void ButtonSettings::keyReleaseEvent ( QKeyEvent *e ) |
189 | { | 189 | { |
190 | buttoninfo *bi = buttonInfoForKeycode ( e-> key ( )); | 190 | buttoninfo *bi = buttonInfoForKeycode ( e-> key ( )); |
191 | 191 | ||
192 | if ( bi && !e-> isAutoRepeat ( ) && m_timer-> isActive ( )) { | 192 | if ( bi && !e-> isAutoRepeat ( ) && m_timer-> isActive ( )) { |
193 | m_timer-> stop ( ); | 193 | m_timer-> stop ( ); |
194 | edit ( bi, false ); | 194 | edit ( bi, false ); |
195 | } | 195 | } |
196 | else | 196 | else |
197 | QDialog::keyReleaseEvent ( e ); | 197 | QDialog::keyReleaseEvent ( e ); |
198 | } | 198 | } |
199 | 199 | ||
200 | void ButtonSettings::keyTimeout ( ) | 200 | void ButtonSettings::keyTimeout ( ) |
201 | { | 201 | { |
202 | if ( m_last_button ) { | 202 | if ( m_last_button ) { |
203 | edit ( m_last_button, true ); | 203 | edit ( m_last_button, true ); |
204 | m_last_button = false; | 204 | m_last_button = false; |
205 | } | 205 | } |
206 | } | 206 | } |
207 | 207 | ||
208 | void ButtonSettings::edit ( buttoninfo *bi, bool hold ) | 208 | void ButtonSettings::edit ( buttoninfo *bi, bool hold ) |
209 | { | 209 | { |
210 | 210 | ||
211 | if ( m_lock ) | 211 | if ( m_lock ) |
212 | return; | 212 | return; |
213 | m_lock = true; | 213 | m_lock = true; |
214 | 214 | ||
215 | RemapDlg *d = new RemapDlg ( bi-> m_button, hold, this ); | 215 | RemapDlg *d = new RemapDlg ( bi-> m_button, hold, this ); |
216 | 216 | ||
217 | if ( QPEApplication::execDialog ( d ) == QDialog::Accepted ) { | 217 | if ( QPEApplication::execDialog ( d ) == QDialog::Accepted ) { |
218 | 218 | ||
219 | 219 | ||
220 | if ( hold ) { | 220 | if ( hold ) { |
221 | bi-> m_hmsg = d-> message ( ); | 221 | bi-> m_hmsg = d-> message ( ); |
222 | bi-> m_hdirty = true; | 222 | bi-> m_hdirty = true; |
223 | } | 223 | } |
224 | else { | 224 | else { |
225 | bi-> m_pmsg = d-> message ( ); | 225 | bi-> m_pmsg = d-> message ( ); |
226 | bi-> m_pdirty = true; | 226 | bi-> m_pdirty = true; |
227 | } | 227 | } |
228 | 228 | ||
229 | updateLabels ( ); | 229 | updateLabels ( ); |
230 | } | 230 | } |
231 | 231 | ||
232 | delete d; | 232 | delete d; |
233 | 233 | ||
234 | m_lock = false; | 234 | m_lock = false; |
235 | } | 235 | } |
diff --git a/core/settings/button/remapdlg.cpp b/core/settings/button/remapdlg.cpp index 7dabe68..121173a 100644 --- a/core/settings/button/remapdlg.cpp +++ b/core/settings/button/remapdlg.cpp | |||
@@ -1,155 +1,155 @@ | |||
1 | #include <qlistview.h> | 1 | #include <qlistview.h> |
2 | #include <qcombobox.h> | 2 | #include <qcombobox.h> |
3 | #include <qtimer.h> | 3 | #include <qtimer.h> |
4 | 4 | ||
5 | #include "remapdlg.h" | 5 | #include "remapdlg.h" |
6 | #include "buttonutils.h" | 6 | #include "buttonutils.h" |
7 | 7 | ||
8 | using namespace Opie; | 8 | using namespace Opie; |
9 | 9 | ||
10 | class NoSortItem : public QListViewItem { | 10 | class NoSortItem : public QListViewItem { |
11 | public: | 11 | public: |
12 | NoSortItem ( QListView *lv, uint pos, const QString &str, const QCString &s1 = 0, const QCString &s2 = 0 ) | 12 | NoSortItem ( QListView *lv, uint pos, const QString &str, const QCString &s1 = 0, const QCString &s2 = 0 ) |
13 | : QListViewItem ( lv, str, s1, s2 ) | 13 | : QListViewItem ( lv, str, s1, s2 ) |
14 | { | 14 | { |
15 | m_key = QString ( QChar ( 'a' + pos )); | 15 | m_key = QString ( QChar ( 'a' + pos )); |
16 | m_def = false; | 16 | m_def = false; |
17 | } | 17 | } |
18 | 18 | ||
19 | void setDefault ( bool b ) | 19 | void setDefault ( bool b ) |
20 | { | 20 | { |
21 | m_def = b; | 21 | m_def = b; |
22 | } | 22 | } |
23 | 23 | ||
24 | virtual QString key ( int /*column*/, bool /*ascending*/ ) const | 24 | virtual QString key ( int /*column*/, bool /*ascending*/ ) const |
25 | { | 25 | { |
26 | return m_key; | 26 | return m_key; |
27 | } | 27 | } |
28 | 28 | ||
29 | virtual void paintCell ( QPainter * p, const QColorGroup & cg, int column, int width, int align ) | 29 | virtual void paintCell ( QPainter * p, const QColorGroup & cg, int column, int width, int align ) |
30 | { | 30 | { |
31 | if ( m_def ) { | 31 | if ( m_def ) { |
32 | QFont f ( listView ( )-> font ( )); | 32 | QFont f ( listView ( )-> font ( )); |
33 | f. setBold ( true ); | 33 | f. setBold ( true ); |
34 | p-> setFont ( f ); | 34 | p-> setFont ( f ); |
35 | } | 35 | } |
36 | QListViewItem::paintCell ( p, cg, column, width, align ); | 36 | QListViewItem::paintCell ( p, cg, column, width, align ); |
37 | } | 37 | } |
38 | 38 | ||
39 | private: | 39 | private: |
40 | QString m_key; | 40 | QString m_key; |
41 | bool m_def; | 41 | bool m_def; |
42 | }; | 42 | }; |
43 | 43 | ||
44 | 44 | ||
45 | RemapDlg::RemapDlg ( const Opie::ODeviceButton *b, bool hold, QWidget *parent, const char *name ) | 45 | RemapDlg::RemapDlg ( const Opie::ODeviceButton *b, bool hold, QWidget *parent, const char *name ) |
46 | : RemapDlgBase ( parent, name, true, WStyle_ContextHelp ) | 46 | : RemapDlgBase ( parent, name, true, WStyle_ContextHelp ) |
47 | { | 47 | { |
48 | setCaption ( tr( "%1 %2", "(hold|press) buttoname" ). arg( hold ? tr( "Held" ) : tr( "Pressed" )). arg ( b-> userText ( ))); | 48 | setCaption ( tr( "%1 %2", "(hold|press) buttoname" ). arg( hold ? tr( "Held" ) : tr( "Pressed" )). arg ( b-> userText ( ))); |
49 | 49 | ||
50 | m_current = 0; | 50 | m_current = 0; |
51 | 51 | ||
52 | static const char * const def_channels [] = { "QPE/Application/", "QPE/Launcher", "QPE/System", "QPE/TaskBar", "QPE/", 0 }; | 52 | static const char * const def_channels [] = { "QPE/Application/", "QPE/Launcher", "QPE/System", "QPE/TaskBar", "QPE/", 0 }; |
53 | w_channel-> insertStrList ((const char **) def_channels ); | 53 | w_channel-> insertStrList ((const char **) def_channels ); |
54 | 54 | ||
55 | m_msg = hold ? b-> heldAction ( ) : b-> pressedAction ( ); | 55 | m_msg = hold ? b-> heldAction ( ) : b-> pressedAction ( ); |
56 | m_msg_preset = hold ? b-> factoryPresetHeldAction ( ) : b-> factoryPresetPressedAction ( ); | 56 | m_msg_preset = hold ? b-> factoryPresetHeldAction ( ) : b-> factoryPresetPressedAction ( ); |
57 | 57 | ||
58 | m_map_none = new NoSortItem ( w_list, 0, tr( "No mapping" )); | 58 | m_map_none = new NoSortItem ( w_list, 0, tr( "No mapping" )); |
59 | m_map_preset = new NoSortItem ( w_list, 1, tr( "Default" ), m_msg_preset. channel ( ), m_msg_preset. message ( )); | 59 | m_map_preset = new NoSortItem ( w_list, 1, tr( "Default" ), m_msg_preset. channel ( ), m_msg_preset. message ( )); |
60 | ((NoSortItem *) m_map_preset )-> setDefault ( true ); | 60 | ((NoSortItem *) m_map_preset )-> setDefault ( true ); |
61 | 61 | ||
62 | if (m_msg. channel ( ) == "ignore") | 62 | if (m_msg. channel ( ) == "ignore") |
63 | { | 63 | { |
64 | m_map_custom = new NoSortItem ( w_list, 2, tr( "Custom" ), m_msg_preset. channel ( ), m_msg_preset. message ( )); | 64 | m_map_custom = new NoSortItem ( w_list, 2, tr( "Custom" ), m_msg_preset. channel ( ), m_msg_preset. message ( )); |
65 | 65 | ||
66 | m_current = m_map_none; | 66 | m_current = m_map_none; |
67 | } | 67 | } |
68 | else | 68 | else |
69 | { | 69 | { |
70 | m_map_custom = new NoSortItem ( w_list, 2, tr( "Custom" ), m_msg. channel ( ), m_msg. message ( )); | 70 | m_map_custom = new NoSortItem ( w_list, 2, tr( "Custom" ), m_msg. channel ( ), m_msg. message ( )); |
71 | m_current = m_map_custom; | 71 | m_current = m_map_custom; |
72 | } | 72 | } |
73 | 73 | ||
74 | QListViewItem *it = new NoSortItem ( w_list, 3, tr( "Actions" )); | 74 | QListViewItem *it = new NoSortItem ( w_list, 3, tr( "Actions" )); |
75 | ButtonUtils::inst ( )-> insertActions ( it ); | 75 | ButtonUtils::inst ( )-> insertActions ( it ); |
76 | it-> setOpen ( true ); | 76 | it-> setOpen ( true ); |
77 | 77 | ||
78 | m_map_show = new NoSortItem ( w_list, 4, tr( "Show" )); | 78 | m_map_show = new NoSortItem ( w_list, 4, tr( "Show" )); |
79 | 79 | ||
80 | w_list-> setCurrentItem ( m_current ); | 80 | w_list-> setCurrentItem ( m_current ); |
81 | 81 | ||
82 | QTimer::singleShot ( 0, this, SLOT( delayedInit ( ))); | 82 | QTimer::singleShot ( 0, this, SLOT( delayedInit())); |
83 | } | 83 | } |
84 | 84 | ||
85 | RemapDlg::~RemapDlg ( ) | 85 | RemapDlg::~RemapDlg ( ) |
86 | { | 86 | { |
87 | } | 87 | } |
88 | 88 | ||
89 | void RemapDlg::delayedInit ( ) | 89 | void RemapDlg::delayedInit ( ) |
90 | { | 90 | { |
91 | bool b = w_list-> viewport ( )-> isUpdatesEnabled ( ); | 91 | bool b = w_list-> viewport ( )-> isUpdatesEnabled ( ); |
92 | w_list-> viewport ( )-> setUpdatesEnabled ( false ); | 92 | w_list-> viewport ( )-> setUpdatesEnabled ( false ); |
93 | 93 | ||
94 | ButtonUtils::inst ( )-> insertAppLnks ( m_map_show ); | 94 | ButtonUtils::inst ( )-> insertAppLnks ( m_map_show ); |
95 | 95 | ||
96 | w_list-> viewport ( )-> setUpdatesEnabled ( b ); | 96 | w_list-> viewport ( )-> setUpdatesEnabled ( b ); |
97 | 97 | ||
98 | m_map_show-> repaint ( ); | 98 | m_map_show-> repaint ( ); |
99 | } | 99 | } |
100 | 100 | ||
101 | void RemapDlg::itemChanged ( QListViewItem *it ) | 101 | void RemapDlg::itemChanged ( QListViewItem *it ) |
102 | { | 102 | { |
103 | bool enabled = false; | 103 | bool enabled = false; |
104 | OQCopMessage m; | 104 | OQCopMessage m; |
105 | 105 | ||
106 | m_current = it; | 106 | m_current = it; |
107 | 107 | ||
108 | if ( it == m_map_none ) | 108 | if ( it == m_map_none ) |
109 | { | 109 | { |
110 | m_msg = m = OQCopMessage ( "ignore", 0 ); | 110 | m_msg = m = OQCopMessage ( "ignore", 0 ); |
111 | qDebug ("***ignoring"); | 111 | qDebug ("***ignoring"); |
112 | } | 112 | } |
113 | else if ( it == m_map_preset ) | 113 | else if ( it == m_map_preset ) |
114 | { | 114 | { |
115 | m_msg = m = m_msg_preset; | 115 | m_msg = m = m_msg_preset; |
116 | qDebug ("***Preset"); | 116 | qDebug ("***Preset"); |
117 | } | 117 | } |
118 | else if ( it && !it-> childCount ( ) ) | 118 | else if ( it && !it-> childCount ( ) ) |
119 | { | 119 | { |
120 | qDebug ("***Custom: %s %s ",it-> text ( 1 ). latin1 ( ), it-> text ( 2 ). latin1 ( )); | 120 | qDebug ("***Custom: %s %s ",it-> text ( 1 ). latin1 ( ), it-> text ( 2 ). latin1 ( )); |
121 | enabled = ( it == m_map_custom ); | 121 | enabled = ( it == m_map_custom ); |
122 | m_msg = m = OQCopMessage ( it-> text ( 1 ). latin1 ( ), it-> text ( 2 ). latin1 ( )); | 122 | m_msg = m = OQCopMessage ( it-> text ( 1 ). latin1 ( ), it-> text ( 2 ). latin1 ( )); |
123 | } | 123 | } |
124 | 124 | ||
125 | w_channel-> setEnabled ( enabled ); | 125 | w_channel-> setEnabled ( enabled ); |
126 | w_message-> setEnabled ( enabled ); | 126 | w_message-> setEnabled ( enabled ); |
127 | 127 | ||
128 | w_channel-> setEditText ( m. channel ( )); | 128 | w_channel-> setEditText ( m. channel ( )); |
129 | //hack for if user has typed in a message, such as 'suspend()' | 129 | //hack for if user has typed in a message, such as 'suspend()' |
130 | //so raise() is always present | 130 | //so raise() is always present |
131 | if(m. message ( ) != "raise()") | 131 | if(m. message ( ) != "raise()") |
132 | w_message->insertItem("raise()"); | 132 | w_message->insertItem("raise()"); |
133 | w_message-> setEditText ( m. message ( )); | 133 | w_message-> setEditText ( m. message ( )); |
134 | } | 134 | } |
135 | 135 | ||
136 | void RemapDlg::textChanged ( const QString &str ) | 136 | void RemapDlg::textChanged ( const QString &str ) |
137 | { | 137 | { |
138 | if ( !m_current ) | 138 | if ( !m_current ) |
139 | return; | 139 | return; |
140 | 140 | ||
141 | QComboBox *which = (QComboBox *) sender ( ); | 141 | QComboBox *which = (QComboBox *) sender ( ); |
142 | 142 | ||
143 | if ( which == w_channel ) | 143 | if ( which == w_channel ) |
144 | m_current-> setText ( 1, str ); | 144 | m_current-> setText ( 1, str ); |
145 | else if ( which == w_message ) | 145 | else if ( which == w_message ) |
146 | m_current-> setText ( 2, str ); | 146 | m_current-> setText ( 2, str ); |
147 | } | 147 | } |
148 | 148 | ||
149 | OQCopMessage RemapDlg::message ( ) | 149 | OQCopMessage RemapDlg::message ( ) |
150 | { | 150 | { |
151 | //make sure to update message if typed in | 151 | //make sure to update message if typed in |
152 | itemChanged(w_list->currentItem()); | 152 | itemChanged(w_list->currentItem()); |
153 | return m_msg; | 153 | return m_msg; |
154 | } | 154 | } |
155 | 155 | ||
diff --git a/core/settings/citytime/citytime.cpp b/core/settings/citytime/citytime.cpp index e7f0c46..721285d 100644 --- a/core/settings/citytime/citytime.cpp +++ b/core/settings/citytime/citytime.cpp | |||
@@ -16,194 +16,194 @@ | |||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | // changes by Maximilian Reiss <harlekin@handhelds.org> | 21 | // changes by Maximilian Reiss <harlekin@handhelds.org> |
22 | 22 | ||
23 | #include "zonemap.h" | 23 | #include "zonemap.h" |
24 | #include "citytime.h" | 24 | #include "citytime.h" |
25 | 25 | ||
26 | #include <qpe/qpeapplication.h> | 26 | #include <qpe/qpeapplication.h> |
27 | #include <qpe/config.h> | 27 | #include <qpe/config.h> |
28 | #include <qpe/tzselect.h> | 28 | #include <qpe/tzselect.h> |
29 | #if !defined(QT_NO_COP) | 29 | #if !defined(QT_NO_COP) |
30 | #include <qpe/qcopenvelope_qws.h> | 30 | #include <qpe/qcopenvelope_qws.h> |
31 | #endif | 31 | #endif |
32 | 32 | ||
33 | #include <qlabel.h> | 33 | #include <qlabel.h> |
34 | #include <qmessagebox.h> | 34 | #include <qmessagebox.h> |
35 | #include <qtoolbutton.h> | 35 | #include <qtoolbutton.h> |
36 | #include <qlayout.h> | 36 | #include <qlayout.h> |
37 | 37 | ||
38 | #include <stdlib.h> | 38 | #include <stdlib.h> |
39 | 39 | ||
40 | CityTime::CityTime( QWidget *parent, const char* name, | 40 | CityTime::CityTime( QWidget *parent, const char* name, |
41 | WFlags fl ) | 41 | WFlags fl ) |
42 | : CityTimeBase( parent, name, fl ), | 42 | : CityTimeBase( parent, name, fl ), |
43 | strRealTz(0), | 43 | strRealTz(0), |
44 | bAdded(false) | 44 | bAdded(false) |
45 | { | 45 | { |
46 | Config config( "qpe" ); | 46 | Config config( "qpe" ); |
47 | config.setGroup( "Time" ); | 47 | config.setGroup( "Time" ); |
48 | bWhichClock = config.readBoolEntry( "AMPM", TRUE ); | 48 | bWhichClock = config.readBoolEntry( "AMPM", TRUE ); |
49 | qDebug( QString("%1").arg(bWhichClock) ); | 49 | qDebug( QString("%1").arg(bWhichClock) ); |
50 | frmMap->changeClock( bWhichClock ); | 50 | frmMap->changeClock( bWhichClock ); |
51 | 51 | ||
52 | char *pEnv; | 52 | char *pEnv; |
53 | pEnv = NULL; | 53 | pEnv = NULL; |
54 | pEnv = getenv("TZ"); | 54 | pEnv = getenv("TZ"); |
55 | if ( pEnv ) | 55 | if ( pEnv ) |
56 | strRealTz = pEnv; | 56 | strRealTz = pEnv; |
57 | pEnv = NULL; | 57 | pEnv = NULL; |
58 | pEnv = getenv("HOME"); | 58 | pEnv = getenv("HOME"); |
59 | if ( pEnv ) | 59 | if ( pEnv ) |
60 | strHome = pEnv; | 60 | strHome = pEnv; |
61 | // append the labels to their respective lists... | 61 | // append the labels to their respective lists... |
62 | listCities.setAutoDelete( true ); | 62 | listCities.setAutoDelete( true ); |
63 | listTimes.setAutoDelete( true ); | 63 | listTimes.setAutoDelete( true ); |
64 | 64 | ||
65 | listCities.append( cmdCity1 ); | 65 | listCities.append( cmdCity1 ); |
66 | listCities.append( cmdCity2 ); | 66 | listCities.append( cmdCity2 ); |
67 | listCities.append( cmdCity3 ); | 67 | listCities.append( cmdCity3 ); |
68 | 68 | ||
69 | listTimes.append( lblCTime1 ); | 69 | listTimes.append( lblCTime1 ); |
70 | listTimes.append( lblCTime2 ); | 70 | listTimes.append( lblCTime2 ); |
71 | listTimes.append( lblCTime3 ); | 71 | listTimes.append( lblCTime3 ); |
72 | 72 | ||
73 | 73 | ||
74 | // kludgy way of getting the screen size so we don't have to depend | 74 | // kludgy way of getting the screen size so we don't have to depend |
75 | // on a resize event... | 75 | // on a resize event... |
76 | QWidget *d = QApplication::desktop(); | 76 | QWidget *d = QApplication::desktop(); |
77 | if ( d->width() < d->height() ) { | 77 | if ( d->width() < d->height() ) { |
78 | // append for that 4 down look | 78 | // append for that 4 down look |
79 | listCities.append( cmdCity4 ); | 79 | listCities.append( cmdCity4 ); |
80 | listCities.append( cmdCity5 ); | 80 | listCities.append( cmdCity5 ); |
81 | listCities.append( cmdCity6 ); | 81 | listCities.append( cmdCity6 ); |
82 | listTimes.append( lblCTime4 ); | 82 | listTimes.append( lblCTime4 ); |
83 | listTimes.append( lblCTime5 ); | 83 | listTimes.append( lblCTime5 ); |
84 | listTimes.append( lblCTime6 ); | 84 | listTimes.append( lblCTime6 ); |
85 | lblCTime7->hide(); | 85 | lblCTime7->hide(); |
86 | lblCTime8->hide(); | 86 | lblCTime8->hide(); |
87 | lblCTime9->hide(); | 87 | lblCTime9->hide(); |
88 | cmdCity7->hide(); | 88 | cmdCity7->hide(); |
89 | cmdCity8->hide(); | 89 | cmdCity8->hide(); |
90 | cmdCity9->hide(); | 90 | cmdCity9->hide(); |
91 | } else { | 91 | } else { |
92 | listCities.append( cmdCity7 ); | 92 | listCities.append( cmdCity7 ); |
93 | listCities.append( cmdCity8 ); | 93 | listCities.append( cmdCity8 ); |
94 | listCities.append( cmdCity9 ); | 94 | listCities.append( cmdCity9 ); |
95 | listTimes.append( lblCTime7 ); | 95 | listTimes.append( lblCTime7 ); |
96 | listTimes.append( lblCTime8 ); | 96 | listTimes.append( lblCTime8 ); |
97 | listTimes.append( lblCTime9 ); | 97 | listTimes.append( lblCTime9 ); |
98 | lblCTime4->hide(); | 98 | lblCTime4->hide(); |
99 | lblCTime5->hide(); | 99 | lblCTime5->hide(); |
100 | lblCTime6->hide(); | 100 | lblCTime6->hide(); |
101 | cmdCity4->hide(); | 101 | cmdCity4->hide(); |
102 | cmdCity5->hide(); | 102 | cmdCity5->hide(); |
103 | cmdCity6->hide(); | 103 | cmdCity6->hide(); |
104 | } | 104 | } |
105 | 105 | ||
106 | selWidget = frmMap->selectionWidget( this ); | 106 | selWidget = frmMap->selectionWidget( this ); |
107 | selWidget->hide(); | 107 | selWidget->hide(); |
108 | CityTimeBaseLayout->addWidget( selWidget ); | 108 | CityTimeBaseLayout->addWidget( selWidget ); |
109 | bAdded = true; | 109 | bAdded = true; |
110 | readInTimes(); | 110 | readInTimes(); |
111 | changed = FALSE; | 111 | changed = FALSE; |
112 | QObject::connect( qApp, SIGNAL( clockChanged( bool ) ), | 112 | QObject::connect( qApp, SIGNAL( clockChanged(bool) ), |
113 | this, SLOT( changeClock( bool ) ) ); | 113 | this, SLOT( changeClock(bool) ) ); |
114 | // now start the timer so we can update the time quickly every second | 114 | // now start the timer so we can update the time quickly every second |
115 | timerEvent( 0 ); | 115 | timerEvent( 0 ); |
116 | } | 116 | } |
117 | 117 | ||
118 | CityTime::~CityTime() | 118 | CityTime::~CityTime() |
119 | { | 119 | { |
120 | if ( changed ) { | 120 | if ( changed ) { |
121 | Config cfg("CityTime"); | 121 | Config cfg("CityTime"); |
122 | cfg.setGroup("TimeZones"); | 122 | cfg.setGroup("TimeZones"); |
123 | QListIterator<QToolButton> itCity( listCities ); | 123 | QListIterator<QToolButton> itCity( listCities ); |
124 | int i; | 124 | int i; |
125 | bool realTzWritten = FALSE; | 125 | bool realTzWritten = FALSE; |
126 | for ( i = 0, itCity.toFirst(); i < CITIES; i++, ++itCity ) { | 126 | for ( i = 0, itCity.toFirst(); i < CITIES; i++, ++itCity ) { |
127 | if ( !strCityTz[i].isNull() ) { | 127 | if ( !strCityTz[i].isNull() ) { |
128 | cfg.writeEntry("Zone"+QString::number(i), strCityTz[i]); | 128 | cfg.writeEntry("Zone"+QString::number(i), strCityTz[i]); |
129 | cfg.writeEntry("ZoneName"+QString::number(i), itCity.current()->text()); | 129 | cfg.writeEntry("ZoneName"+QString::number(i), itCity.current()->text()); |
130 | if ( strCityTz[i] == strRealTz ) | 130 | if ( strCityTz[i] == strRealTz ) |
131 | realTzWritten = TRUE; | 131 | realTzWritten = TRUE; |
132 | } | 132 | } |
133 | } | 133 | } |
134 | if ( realTzWritten ) { | 134 | if ( realTzWritten ) { |
135 | cfg.removeEntry("Zone"+QString::number(CITIES)); | 135 | cfg.removeEntry("Zone"+QString::number(CITIES)); |
136 | cfg.removeEntry("ZoneName"+QString::number(CITIES)); | 136 | cfg.removeEntry("ZoneName"+QString::number(CITIES)); |
137 | } else { | 137 | } else { |
138 | cfg.writeEntry("Zone"+QString::number(CITIES), strRealTz); | 138 | cfg.writeEntry("Zone"+QString::number(CITIES), strRealTz); |
139 | if ( nameRealTz.isEmpty() ) { | 139 | if ( nameRealTz.isEmpty() ) { |
140 | int i = strRealTz.find( '/' ); | 140 | int i = strRealTz.find( '/' ); |
141 | nameRealTz = strRealTz.mid( i+1 ); | 141 | nameRealTz = strRealTz.mid( i+1 ); |
142 | } | 142 | } |
143 | cfg.writeEntry("ZoneName"+QString::number(CITIES), nameRealTz); | 143 | cfg.writeEntry("ZoneName"+QString::number(CITIES), nameRealTz); |
144 | } | 144 | } |
145 | QCopEnvelope ( "QPE/System", "timeZoneListChange()" ); | 145 | QCopEnvelope ( "QPE/System", "timeZoneListChange()" ); |
146 | 146 | ||
147 | changed = FALSE; | 147 | changed = FALSE; |
148 | } | 148 | } |
149 | // restore the timezone, just in case we messed with it and | 149 | // restore the timezone, just in case we messed with it and |
150 | // are destroyed at an inoppurtune moment | 150 | // are destroyed at an inoppurtune moment |
151 | if ( !strRealTz.isNull() ) { | 151 | if ( !strRealTz.isNull() ) { |
152 | // this should be checked, but there is not much that can done at this | 152 | // this should be checked, but there is not much that can done at this |
153 | //point if it fails | 153 | //point if it fails |
154 | setenv( "TZ", strRealTz, true ); | 154 | setenv( "TZ", strRealTz, true ); |
155 | } | 155 | } |
156 | } | 156 | } |
157 | 157 | ||
158 | void CityTime::timerEvent( QTimerEvent *e ) | 158 | void CityTime::timerEvent( QTimerEvent *e ) |
159 | { | 159 | { |
160 | if ( e ) | 160 | if ( e ) |
161 | killTimer( timerId ); | 161 | killTimer( timerId ); |
162 | // change the time again!! | 162 | // change the time again!! |
163 | showTime(); | 163 | showTime(); |
164 | int ms = 1000 - QTime::currentTime().msec(); | 164 | int ms = 1000 - QTime::currentTime().msec(); |
165 | timerId = startTimer( ms ); | 165 | timerId = startTimer( ms ); |
166 | } | 166 | } |
167 | 167 | ||
168 | void CityTime::mousePressEvent( QMouseEvent * ) | 168 | void CityTime::mousePressEvent( QMouseEvent * ) |
169 | { | 169 | { |
170 | // DEBUG enable this to get a look at the zone information DEBUG | 170 | // DEBUG enable this to get a look at the zone information DEBUG |
171 | // frmMap->showZones(); | 171 | // frmMap->showZones(); |
172 | } | 172 | } |
173 | 173 | ||
174 | void CityTime::showTime( void ) | 174 | void CityTime::showTime( void ) |
175 | { | 175 | { |
176 | int i; | 176 | int i; |
177 | QListIterator<QLabel> itTime(listTimes); | 177 | QListIterator<QLabel> itTime(listTimes); |
178 | 178 | ||
179 | // traverse the list... | 179 | // traverse the list... |
180 | for ( i = 0, itTime.toFirst(); i < CITIES; i++, ++itTime) { | 180 | for ( i = 0, itTime.toFirst(); i < CITIES; i++, ++itTime) { |
181 | if ( !strCityTz[i].isNull() ) { | 181 | if ( !strCityTz[i].isNull() ) { |
182 | if ( setenv( "TZ", strCityTz[i], true ) == 0 ) { | 182 | if ( setenv( "TZ", strCityTz[i], true ) == 0 ) { |
183 | itTime.current()->setText( TimeString::shortTime( bWhichClock ) ); | 183 | itTime.current()->setText( TimeString::shortTime( bWhichClock ) ); |
184 | } else { | 184 | } else { |
185 | QMessageBox::critical( this, tr( "Time Changing" ), | 185 | QMessageBox::critical( this, tr( "Time Changing" ), |
186 | tr( "There was a problem setting timezone %1" ) | 186 | tr( "There was a problem setting timezone %1" ) |
187 | .arg( QString::number( i + 1 ) ) ); | 187 | .arg( QString::number( i + 1 ) ) ); |
188 | } | 188 | } |
189 | } | 189 | } |
190 | } | 190 | } |
191 | // done playing around... put it all back | 191 | // done playing around... put it all back |
192 | unsetenv( "TZ" ); | 192 | unsetenv( "TZ" ); |
193 | if ( !strRealTz.isNull() ) { | 193 | if ( !strRealTz.isNull() ) { |
194 | if ( setenv( "TZ", strRealTz, true ) != 0 ) { | 194 | if ( setenv( "TZ", strRealTz, true ) != 0 ) { |
195 | QMessageBox::critical( this, tr( "Restore Time Zone" ), | 195 | QMessageBox::critical( this, tr( "Restore Time Zone" ), |
196 | tr( "There was a problem setting your timezone." | 196 | tr( "There was a problem setting your timezone." |
197 | "Your time may be wrong now..." ) ); | 197 | "Your time may be wrong now..." ) ); |
198 | } | 198 | } |
199 | } | 199 | } |
200 | } | 200 | } |
201 | 201 | ||
202 | void CityTime::beginNewTz() | 202 | void CityTime::beginNewTz() |
203 | { | 203 | { |
204 | buttonWidget->hide(); | 204 | buttonWidget->hide(); |
205 | frmMap->setFocus(); | 205 | frmMap->setFocus(); |
206 | selWidget->show(); | 206 | selWidget->show(); |
207 | // CityTimeBaseLayout->addWidget( selWidget ); | 207 | // CityTimeBaseLayout->addWidget( selWidget ); |
208 | } | 208 | } |
209 | 209 | ||
diff --git a/core/settings/citytime/citytimebase.cpp b/core/settings/citytime/citytimebase.cpp index a3483cc..323929b 100644 --- a/core/settings/citytime/citytimebase.cpp +++ b/core/settings/citytime/citytimebase.cpp | |||
@@ -137,193 +137,193 @@ CityTimeBase::CityTimeBase( QWidget* parent, const char* name, WFlags ) | |||
137 | QFont lblCTime1_font( lblCTime1->font() ); | 137 | QFont lblCTime1_font( lblCTime1->font() ); |
138 | lblCTime1_font.setPointSize( 10 ); | 138 | lblCTime1_font.setPointSize( 10 ); |
139 | lblCTime1->setFont( lblCTime1_font ); | 139 | lblCTime1->setFont( lblCTime1_font ); |
140 | lblCTime1->setText( tr( "" ) ); | 140 | lblCTime1->setText( tr( "" ) ); |
141 | lblCTime1->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); | 141 | lblCTime1->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); |
142 | 142 | ||
143 | Layout2->addWidget( lblCTime1, 0, 1 ); | 143 | Layout2->addWidget( lblCTime1, 0, 1 ); |
144 | 144 | ||
145 | cmdCity3 = new QToolButton( buttonWidget, "cmdCity3" ); | 145 | cmdCity3 = new QToolButton( buttonWidget, "cmdCity3" ); |
146 | cmdCity3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, cmdCity3->sizePolicy().hasHeightForWidth() ) ); | 146 | cmdCity3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, cmdCity3->sizePolicy().hasHeightForWidth() ) ); |
147 | QFont cmdCity3_font( cmdCity3->font() ); | 147 | QFont cmdCity3_font( cmdCity3->font() ); |
148 | cmdCity3_font.setBold( TRUE ); | 148 | cmdCity3_font.setBold( TRUE ); |
149 | cmdCity3->setFont( cmdCity3_font ); | 149 | cmdCity3->setFont( cmdCity3_font ); |
150 | cmdCity3->setFocusPolicy( QToolButton::TabFocus ); | 150 | cmdCity3->setFocusPolicy( QToolButton::TabFocus ); |
151 | cmdCity3->setText( tr( "" ) ); | 151 | cmdCity3->setText( tr( "" ) ); |
152 | cmdCity3->setToggleButton( TRUE ); | 152 | cmdCity3->setToggleButton( TRUE ); |
153 | cmdCity3->setToggleButton( TRUE ); | 153 | cmdCity3->setToggleButton( TRUE ); |
154 | 154 | ||
155 | Layout2->addWidget( cmdCity3, 2, 0 ); | 155 | Layout2->addWidget( cmdCity3, 2, 0 ); |
156 | 156 | ||
157 | lblCTime8 = new QLabel( buttonWidget, "lblCTime8" ); | 157 | lblCTime8 = new QLabel( buttonWidget, "lblCTime8" ); |
158 | lblCTime8->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, lblCTime8->sizePolicy().hasHeightForWidth() ) ); | 158 | lblCTime8->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, lblCTime8->sizePolicy().hasHeightForWidth() ) ); |
159 | QFont lblCTime8_font( lblCTime8->font() ); | 159 | QFont lblCTime8_font( lblCTime8->font() ); |
160 | lblCTime8_font.setPointSize( 10 ); | 160 | lblCTime8_font.setPointSize( 10 ); |
161 | lblCTime8->setFont( lblCTime8_font ); | 161 | lblCTime8->setFont( lblCTime8_font ); |
162 | lblCTime8->setText( tr( "" ) ); | 162 | lblCTime8->setText( tr( "" ) ); |
163 | lblCTime8->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); | 163 | lblCTime8->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); |
164 | 164 | ||
165 | Layout2->addWidget( lblCTime8, 1, 3 ); | 165 | Layout2->addWidget( lblCTime8, 1, 3 ); |
166 | 166 | ||
167 | cmdCity1 = new QToolButton( buttonWidget, "cmdCity1" ); | 167 | cmdCity1 = new QToolButton( buttonWidget, "cmdCity1" ); |
168 | cmdCity1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, cmdCity1->sizePolicy().hasHeightForWidth() ) ); | 168 | cmdCity1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, cmdCity1->sizePolicy().hasHeightForWidth() ) ); |
169 | QFont cmdCity1_font( cmdCity1->font() ); | 169 | QFont cmdCity1_font( cmdCity1->font() ); |
170 | cmdCity1_font.setBold( TRUE ); | 170 | cmdCity1_font.setBold( TRUE ); |
171 | cmdCity1->setFont( cmdCity1_font ); | 171 | cmdCity1->setFont( cmdCity1_font ); |
172 | cmdCity1->setFocusPolicy( QToolButton::TabFocus ); | 172 | cmdCity1->setFocusPolicy( QToolButton::TabFocus ); |
173 | cmdCity1->setText( tr( "" ) ); | 173 | cmdCity1->setText( tr( "" ) ); |
174 | cmdCity1->setToggleButton( TRUE ); | 174 | cmdCity1->setToggleButton( TRUE ); |
175 | cmdCity1->setToggleButton( TRUE ); | 175 | cmdCity1->setToggleButton( TRUE ); |
176 | 176 | ||
177 | Layout2->addWidget( cmdCity1, 0, 0 ); | 177 | Layout2->addWidget( cmdCity1, 0, 0 ); |
178 | 178 | ||
179 | lblCTime7 = new QLabel( buttonWidget, "lblCTime7" ); | 179 | lblCTime7 = new QLabel( buttonWidget, "lblCTime7" ); |
180 | lblCTime7->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, lblCTime7->sizePolicy().hasHeightForWidth() ) ); | 180 | lblCTime7->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, lblCTime7->sizePolicy().hasHeightForWidth() ) ); |
181 | QFont lblCTime7_font( lblCTime7->font() ); | 181 | QFont lblCTime7_font( lblCTime7->font() ); |
182 | lblCTime7_font.setPointSize( 10 ); | 182 | lblCTime7_font.setPointSize( 10 ); |
183 | lblCTime7->setFont( lblCTime7_font ); | 183 | lblCTime7->setFont( lblCTime7_font ); |
184 | lblCTime7->setText( tr( "" ) ); | 184 | lblCTime7->setText( tr( "" ) ); |
185 | lblCTime7->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); | 185 | lblCTime7->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); |
186 | 186 | ||
187 | Layout2->addWidget( lblCTime7, 0, 3 ); | 187 | Layout2->addWidget( lblCTime7, 0, 3 ); |
188 | 188 | ||
189 | lblCTime4 = new QLabel( buttonWidget, "lblCTime4" ); | 189 | lblCTime4 = new QLabel( buttonWidget, "lblCTime4" ); |
190 | QFont lblCTime4_font( lblCTime4->font() ); | 190 | QFont lblCTime4_font( lblCTime4->font() ); |
191 | lblCTime4_font.setPointSize( 10 ); | 191 | lblCTime4_font.setPointSize( 10 ); |
192 | lblCTime4->setFont( lblCTime4_font ); | 192 | lblCTime4->setFont( lblCTime4_font ); |
193 | lblCTime4->setText( tr( "" ) ); | 193 | lblCTime4->setText( tr( "" ) ); |
194 | lblCTime4->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); | 194 | lblCTime4->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); |
195 | 195 | ||
196 | Layout2->addWidget( lblCTime4, 3, 1 ); | 196 | Layout2->addWidget( lblCTime4, 3, 1 ); |
197 | 197 | ||
198 | cmdCity5 = new QToolButton( buttonWidget, "cmdCity5" ); | 198 | cmdCity5 = new QToolButton( buttonWidget, "cmdCity5" ); |
199 | cmdCity5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, cmdCity5->sizePolicy().hasHeightForWidth() ) ); | 199 | cmdCity5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, cmdCity5->sizePolicy().hasHeightForWidth() ) ); |
200 | QFont cmdCity5_font( cmdCity5->font() ); | 200 | QFont cmdCity5_font( cmdCity5->font() ); |
201 | cmdCity5_font.setBold( TRUE ); | 201 | cmdCity5_font.setBold( TRUE ); |
202 | cmdCity5->setFont( cmdCity5_font ); | 202 | cmdCity5->setFont( cmdCity5_font ); |
203 | cmdCity5->setFocusPolicy( QToolButton::TabFocus ); | 203 | cmdCity5->setFocusPolicy( QToolButton::TabFocus ); |
204 | cmdCity5->setText( tr( "" ) ); | 204 | cmdCity5->setText( tr( "" ) ); |
205 | cmdCity5->setToggleButton( TRUE ); | 205 | cmdCity5->setToggleButton( TRUE ); |
206 | cmdCity5->setToggleButton( TRUE ); | 206 | cmdCity5->setToggleButton( TRUE ); |
207 | 207 | ||
208 | Layout2->addWidget( cmdCity5, 4, 0 ); | 208 | Layout2->addWidget( cmdCity5, 4, 0 ); |
209 | 209 | ||
210 | lblCTime3 = new QLabel( buttonWidget, "lblCTime3" ); | 210 | lblCTime3 = new QLabel( buttonWidget, "lblCTime3" ); |
211 | QFont lblCTime3_font( lblCTime3->font() ); | 211 | QFont lblCTime3_font( lblCTime3->font() ); |
212 | lblCTime3_font.setPointSize( 10 ); | 212 | lblCTime3_font.setPointSize( 10 ); |
213 | lblCTime3->setFont( lblCTime3_font ); | 213 | lblCTime3->setFont( lblCTime3_font ); |
214 | lblCTime3->setText( tr( "" ) ); | 214 | lblCTime3->setText( tr( "" ) ); |
215 | lblCTime3->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); | 215 | lblCTime3->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) ); |
216 | 216 | ||
217 | Layout2->addWidget( lblCTime3, 2, 1 ); | 217 | Layout2->addWidget( lblCTime3, 2, 1 ); |
218 | 218 | ||
219 | cmdCity9 = new QToolButton( buttonWidget, "cmdCity9" ); | 219 | cmdCity9 = new QToolButton( buttonWidget, "cmdCity9" ); |
220 | cmdCity9->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, cmdCity9->sizePolicy().hasHeightForWidth() ) ); | 220 | cmdCity9->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, cmdCity9->sizePolicy().hasHeightForWidth() ) ); |
221 | QFont cmdCity9_font( cmdCity9->font() ); | 221 | QFont cmdCity9_font( cmdCity9->font() ); |
222 | cmdCity9_font.setBold( TRUE ); | 222 | cmdCity9_font.setBold( TRUE ); |
223 | cmdCity9->setFont( cmdCity9_font ); | 223 | cmdCity9->setFont( cmdCity9_font ); |
224 | cmdCity9->setFocusPolicy( QToolButton::TabFocus ); | 224 | cmdCity9->setFocusPolicy( QToolButton::TabFocus ); |
225 | cmdCity9->setText( tr( "" ) ); | 225 | cmdCity9->setText( tr( "" ) ); |
226 | cmdCity9->setToggleButton( TRUE ); | 226 | cmdCity9->setToggleButton( TRUE ); |
227 | cmdCity9->setToggleButton( TRUE ); | 227 | cmdCity9->setToggleButton( TRUE ); |
228 | 228 | ||
229 | Layout2->addWidget( cmdCity9, 2, 2 ); | 229 | Layout2->addWidget( cmdCity9, 2, 2 ); |
230 | CityTimeBaseLayout->addWidget( buttonWidget ); | 230 | CityTimeBaseLayout->addWidget( buttonWidget ); |
231 | 231 | ||
232 | // signals and slots connections | 232 | // signals and slots connections |
233 | connect( frmMap, SIGNAL( signalTz(const QString &, const QString &) ), this, SLOT( slotNewTz(const QString &, const QString &) ) ); | 233 | connect( frmMap, SIGNAL( signalTz(const QString&,const QString&) ), this, SLOT( slotNewTz(const QString&,const QString&) ) ); |
234 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); | 234 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); |
235 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); | 235 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); |
236 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); | 236 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); |
237 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); | 237 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); |
238 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); | 238 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); |
239 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); | 239 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); |
240 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); | 240 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); |
241 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); | 241 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); |
242 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); | 242 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); |
243 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); | 243 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); |
244 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); | 244 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); |
245 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); | 245 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); |
246 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); | 246 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); |
247 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); | 247 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); |
248 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); | 248 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); |
249 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); | 249 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); |
250 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); | 250 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); |
251 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); | 251 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); |
252 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); | 252 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); |
253 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); | 253 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); |
254 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); | 254 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); |
255 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); | 255 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); |
256 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); | 256 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); |
257 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); | 257 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); |
258 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); | 258 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); |
259 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); | 259 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); |
260 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); | 260 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); |
261 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); | 261 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); |
262 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); | 262 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); |
263 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); | 263 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); |
264 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); | 264 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); |
265 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); | 265 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); |
266 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); | 266 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); |
267 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); | 267 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); |
268 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); | 268 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); |
269 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); | 269 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); |
270 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); | 270 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); |
271 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); | 271 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); |
272 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); | 272 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); |
273 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); | 273 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); |
274 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); | 274 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); |
275 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); | 275 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); |
276 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); | 276 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); |
277 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); | 277 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); |
278 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); | 278 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); |
279 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); | 279 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); |
280 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); | 280 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); |
281 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); | 281 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); |
282 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); | 282 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); |
283 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); | 283 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); |
284 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); | 284 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); |
285 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); | 285 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); |
286 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); | 286 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); |
287 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); | 287 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); |
288 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); | 288 | connect( cmdCity6, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); |
289 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); | 289 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); |
290 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); | 290 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); |
291 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); | 291 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity1, SLOT( setDisabled(bool) ) ); |
292 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); | 292 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity3, SLOT( setDisabled(bool) ) ); |
293 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); | 293 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity4, SLOT( setDisabled(bool) ) ); |
294 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); | 294 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity5, SLOT( setDisabled(bool) ) ); |
295 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); | 295 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity6, SLOT( setDisabled(bool) ) ); |
296 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); | 296 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity7, SLOT( setDisabled(bool) ) ); |
297 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); | 297 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity8, SLOT( setDisabled(bool) ) ); |
298 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); | 298 | connect( cmdCity1, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); |
299 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); | 299 | connect( cmdCity2, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); |
300 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); | 300 | connect( cmdCity3, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); |
301 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); | 301 | connect( cmdCity4, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); |
302 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); | 302 | connect( cmdCity5, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); |
303 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); | 303 | connect( cmdCity7, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); |
304 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); | 304 | connect( cmdCity8, SIGNAL( toggled(bool) ), cmdCity9, SLOT( setDisabled(bool) ) ); |
305 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); | 305 | connect( cmdCity9, SIGNAL( toggled(bool) ), cmdCity2, SLOT( setDisabled(bool) ) ); |
306 | connect( cmdCity1, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); | 306 | connect( cmdCity1, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); |
307 | connect( cmdCity2, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); | 307 | connect( cmdCity2, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); |
308 | connect( cmdCity7, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); | 308 | connect( cmdCity7, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); |
309 | connect( cmdCity3, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); | 309 | connect( cmdCity3, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); |
310 | connect( cmdCity4, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); | 310 | connect( cmdCity4, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); |
311 | connect( cmdCity5, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); | 311 | connect( cmdCity5, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); |
312 | connect( cmdCity6, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); | 312 | connect( cmdCity6, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); |
313 | connect( cmdCity8, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); | 313 | connect( cmdCity8, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); |
314 | connect( cmdCity9, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); | 314 | connect( cmdCity9, SIGNAL( toggled(bool) ), this, SLOT( beginNewTz() ) ); |
315 | 315 | ||
316 | // tab order | 316 | // tab order |
317 | setTabOrder( cmdCity1, cmdCity2 ); | 317 | setTabOrder( cmdCity1, cmdCity2 ); |
318 | setTabOrder( cmdCity2, cmdCity3 ); | 318 | setTabOrder( cmdCity2, cmdCity3 ); |
319 | setTabOrder( cmdCity3, cmdCity4 ); | 319 | setTabOrder( cmdCity3, cmdCity4 ); |
320 | setTabOrder( cmdCity4, cmdCity5 ); | 320 | setTabOrder( cmdCity4, cmdCity5 ); |
321 | setTabOrder( cmdCity5, cmdCity6 ); | 321 | setTabOrder( cmdCity5, cmdCity6 ); |
322 | setTabOrder( cmdCity6, cmdCity7 ); | 322 | setTabOrder( cmdCity6, cmdCity7 ); |
323 | setTabOrder( cmdCity7, cmdCity8 ); | 323 | setTabOrder( cmdCity7, cmdCity8 ); |
324 | setTabOrder( cmdCity8, cmdCity9 ); | 324 | setTabOrder( cmdCity8, cmdCity9 ); |
325 | setTabOrder( cmdCity9, frmMap ); | 325 | setTabOrder( cmdCity9, frmMap ); |
326 | } | 326 | } |
327 | 327 | ||
328 | /* | 328 | /* |
329 | * Destroys the object and frees any allocated resources | 329 | * Destroys the object and frees any allocated resources |
diff --git a/core/settings/citytime/zonemap.cpp b/core/settings/citytime/zonemap.cpp index b83da59..b6843d2 100644 --- a/core/settings/citytime/zonemap.cpp +++ b/core/settings/citytime/zonemap.cpp | |||
@@ -94,198 +94,198 @@ ZoneField::ZoneField( const QString& strLine ) | |||
94 | tmp %= 100; | 94 | tmp %= 100; |
95 | _y += tmp; | 95 | _y += tmp; |
96 | } | 96 | } |
97 | } | 97 | } |
98 | iStart = regCoord.match( strLine, iStart + iLen, &iLen ); | 98 | iStart = regCoord.match( strLine, iStart + iLen, &iLen ); |
99 | if ( iStart >= 0 ) { | 99 | if ( iStart >= 0 ) { |
100 | strTmp = strLine.mid( iStart, iLen ); | 100 | strTmp = strLine.mid( iStart, iLen ); |
101 | tmp = strTmp.toInt(); | 101 | tmp = strTmp.toInt(); |
102 | if ( iLen < 8 ) { | 102 | if ( iLen < 8 ) { |
103 | _x = tmp / 100; | 103 | _x = tmp / 100; |
104 | _x *= 60; | 104 | _x *= 60; |
105 | _x += tmp % 100; | 105 | _x += tmp % 100; |
106 | _x *= 60; | 106 | _x *= 60; |
107 | } else { | 107 | } else { |
108 | _x = tmp / 10000; | 108 | _x = tmp / 10000; |
109 | _x *= 60; | 109 | _x *= 60; |
110 | tmp %= 10000; | 110 | tmp %= 10000; |
111 | _x += tmp / 100; | 111 | _x += tmp / 100; |
112 | _x *= 60; | 112 | _x *= 60; |
113 | tmp %= 100; | 113 | tmp %= 100; |
114 | _x += tmp; | 114 | _x += tmp; |
115 | } | 115 | } |
116 | } | 116 | } |
117 | iStart = regCountry.match( strLine, 0, &iLen ); | 117 | iStart = regCountry.match( strLine, 0, &iLen ); |
118 | // help with the shortcoming in 2.x regexp... | 118 | // help with the shortcoming in 2.x regexp... |
119 | iStop = strLine.findRev( '/' ); | 119 | iStop = strLine.findRev( '/' ); |
120 | if ( iStart >= 0 ) { | 120 | if ( iStart >= 0 ) { |
121 | iLen = (iStop - iStart) + 1; | 121 | iLen = (iStop - iStart) + 1; |
122 | strCountry = strLine.mid( iStart, iLen ); | 122 | strCountry = strLine.mid( iStart, iLen ); |
123 | } | 123 | } |
124 | // now match the city... | 124 | // now match the city... |
125 | iStart = regCity.match( strLine, iStart + iLen, &iLen ); | 125 | iStart = regCity.match( strLine, iStart + iLen, &iLen ); |
126 | if ( iStart >= 0 ) { | 126 | if ( iStart >= 0 ) { |
127 | strCity = strLine.mid( iStart, iLen ); | 127 | strCity = strLine.mid( iStart, iLen ); |
128 | } | 128 | } |
129 | } | 129 | } |
130 | 130 | ||
131 | void ZoneField::showStructure( void ) const | 131 | void ZoneField::showStructure( void ) const |
132 | { | 132 | { |
133 | qDebug( "Country: %s", strCountry.latin1() ); | 133 | qDebug( "Country: %s", strCountry.latin1() ); |
134 | qDebug( "City: %s", strCity.latin1() ); | 134 | qDebug( "City: %s", strCity.latin1() ); |
135 | qDebug( "x: %d", _x ); | 135 | qDebug( "x: %d", _x ); |
136 | qDebug( "y: %d\n", _y ); | 136 | qDebug( "y: %d\n", _y ); |
137 | } | 137 | } |
138 | 138 | ||
139 | ZoneMap::ZoneMap( QWidget *parent, const char* name ) | 139 | ZoneMap::ZoneMap( QWidget *parent, const char* name ) |
140 | : QScrollView( parent, name ), | 140 | : QScrollView( parent, name ), |
141 | pLast( 0 ), | 141 | pLast( 0 ), |
142 | pRepaint( 0 ), | 142 | pRepaint( 0 ), |
143 | ox( 0 ), | 143 | ox( 0 ), |
144 | oy( 0 ), | 144 | oy( 0 ), |
145 | drawableW( -1 ), | 145 | drawableW( -1 ), |
146 | drawableH( -1 ), | 146 | drawableH( -1 ), |
147 | bZoom( FALSE ), | 147 | bZoom( FALSE ), |
148 | bIllum( TRUE ), | 148 | bIllum( TRUE ), |
149 | cursor( 0 ) | 149 | cursor( 0 ) |
150 | { | 150 | { |
151 | viewport()->setFocusPolicy( StrongFocus ); | 151 | viewport()->setFocusPolicy( StrongFocus ); |
152 | 152 | ||
153 | // set mouse tracking so we can use the mouse move event | 153 | // set mouse tracking so we can use the mouse move event |
154 | zones.setAutoDelete( true ); | 154 | zones.setAutoDelete( true ); |
155 | // get the map loaded | 155 | // get the map loaded |
156 | // just set the current image to point | 156 | // just set the current image to point |
157 | pixCurr = new QPixmap(); | 157 | pixCurr = new QPixmap(); |
158 | 158 | ||
159 | QPixmap pixZoom = Resource::loadPixmap( "mag" ); | 159 | QPixmap pixZoom = Resource::loadPixmap( "mag" ); |
160 | 160 | ||
161 | cmdZoom = new QToolButton( this, "Zoom command" ); | 161 | cmdZoom = new QToolButton( this, "Zoom command" ); |
162 | cmdZoom->setPixmap( pixZoom ); | 162 | cmdZoom->setPixmap( pixZoom ); |
163 | cmdZoom->setToggleButton( true ); | 163 | cmdZoom->setToggleButton( true ); |
164 | 164 | ||
165 | cmdZoom->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, | 165 | cmdZoom->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, |
166 | (QSizePolicy::SizeType)0, | 166 | (QSizePolicy::SizeType)0, |
167 | cmdZoom->sizePolicy().hasHeightForWidth() ) ); | 167 | cmdZoom->sizePolicy().hasHeightForWidth() ) ); |
168 | cmdZoom->setMaximumSize( cmdZoom->sizeHint() ); | 168 | cmdZoom->setMaximumSize( cmdZoom->sizeHint() ); |
169 | // probably don't need this, but just in case... | 169 | // probably don't need this, but just in case... |
170 | cmdZoom->move( width() - cmdZoom->width(), height() - cmdZoom->height() ); | 170 | cmdZoom->move( width() - cmdZoom->width(), height() - cmdZoom->height() ); |
171 | 171 | ||
172 | 172 | ||
173 | lblCity = new QLabel( tr( "CITY" ), this, "City Label" ); | 173 | lblCity = new QLabel( tr( "CITY" ), this, "City Label" ); |
174 | lblCity->setMinimumSize( lblCity->sizeHint() ); | 174 | lblCity->setMinimumSize( lblCity->sizeHint() ); |
175 | lblCity->setFrameStyle( QFrame::Plain | QFrame::Box ); | 175 | lblCity->setFrameStyle( QFrame::Plain | QFrame::Box ); |
176 | lblCity->setBackgroundColor( yellow ); | 176 | lblCity->setBackgroundColor( yellow ); |
177 | lblCity->hide(); | 177 | lblCity->hide(); |
178 | 178 | ||
179 | // A timer to make sure the label gets hidden | 179 | // A timer to make sure the label gets hidden |
180 | tHide = new QTimer( this, "Label Timer" ); | 180 | tHide = new QTimer( this, "Label Timer" ); |
181 | QObject::connect( tHide, SIGNAL( timeout() ), | 181 | QObject::connect( tHide, SIGNAL( timeout() ), |
182 | lblCity, SLOT( hide() ) ); | 182 | lblCity, SLOT( hide() ) ); |
183 | QObject::connect( tHide, SIGNAL( timeout() ), | 183 | QObject::connect( tHide, SIGNAL( timeout() ), |
184 | this, SLOT( slotRedraw() ) ); | 184 | this, SLOT( slotRedraw() ) ); |
185 | QTimer *tUpdate = new QTimer( this, "Update Timer" ); | 185 | QTimer *tUpdate = new QTimer( this, "Update Timer" ); |
186 | QObject::connect( tUpdate, SIGNAL( timeout() ), | 186 | QObject::connect( tUpdate, SIGNAL( timeout() ), |
187 | this, SLOT( slotUpdate() ) ); | 187 | this, SLOT( slotUpdate() ) ); |
188 | QObject::connect( qApp, SIGNAL( timeChanged() ), | 188 | QObject::connect( qApp, SIGNAL( timeChanged() ), |
189 | this, SLOT( slotUpdate() ) ); | 189 | this, SLOT( slotUpdate() ) ); |
190 | QObject::connect( cmdZoom, SIGNAL( toggled( bool ) ), | 190 | QObject::connect( cmdZoom, SIGNAL( toggled(bool) ), |
191 | this, SLOT( slotZoom( bool ) ) ); | 191 | this, SLOT( slotZoom(bool) ) ); |
192 | QObject::connect( &norm, SIGNAL( signalNewPoint( const QPoint& ) ), | 192 | QObject::connect( &norm, SIGNAL( signalNewPoint(const QPoint&) ), |
193 | this, SLOT( slotFindCity( const QPoint& ) ) ); | 193 | this, SLOT( slotFindCity(const QPoint&) ) ); |
194 | QObject::connect( qApp, SIGNAL( clockChanged( bool ) ), | 194 | QObject::connect( qApp, SIGNAL( clockChanged(bool) ), |
195 | this, SLOT( changeClock( bool ) ) ); | 195 | this, SLOT( changeClock(bool) ) ); |
196 | // update the sun's movement every 5 minutes | 196 | // update the sun's movement every 5 minutes |
197 | tUpdate->start( 5 * 60 * 1000 ); | 197 | tUpdate->start( 5 * 60 * 1000 ); |
198 | // May as well read in the timezone information too... | 198 | // May as well read in the timezone information too... |
199 | readZones(); | 199 | readZones(); |
200 | } | 200 | } |
201 | 201 | ||
202 | ZoneMap::~ZoneMap() | 202 | ZoneMap::~ZoneMap() |
203 | { | 203 | { |
204 | } | 204 | } |
205 | 205 | ||
206 | void ZoneMap::readZones( void ) | 206 | void ZoneMap::readZones( void ) |
207 | { | 207 | { |
208 | QFile fZone( strZONEINFO ); | 208 | QFile fZone( strZONEINFO ); |
209 | if ( !fZone.open( IO_ReadOnly ) ) { | 209 | if ( !fZone.open( IO_ReadOnly ) ) { |
210 | QMessageBox::warning (this, | 210 | QMessageBox::warning (this, |
211 | tr( "Unable to Find Timezone Info" ), | 211 | tr( "Unable to Find Timezone Info" ), |
212 | tr( "<p>Unable to find any timezone information in %1" ) | 212 | tr( "<p>Unable to find any timezone information in %1" ) |
213 | .arg( strZONEINFO )); | 213 | .arg( strZONEINFO )); |
214 | exit(-1); | 214 | exit(-1); |
215 | } else { | 215 | } else { |
216 | QTextStream tZone( &fZone ); | 216 | QTextStream tZone( &fZone ); |
217 | while ( !tZone.atEnd() ) { | 217 | while ( !tZone.atEnd() ) { |
218 | QString strLine = tZone.readLine(); | 218 | QString strLine = tZone.readLine(); |
219 | // only pass on lines that aren't comments | 219 | // only pass on lines that aren't comments |
220 | if ( strLine[0] != '#' ) { | 220 | if ( strLine[0] != '#' ) { |
221 | zones.append( new ZoneField( strLine ) ); | 221 | zones.append( new ZoneField( strLine ) ); |
222 | } | 222 | } |
223 | } | 223 | } |
224 | fZone.close(); | 224 | fZone.close(); |
225 | } | 225 | } |
226 | } | 226 | } |
227 | 227 | ||
228 | void ZoneMap::viewportMousePressEvent( QMouseEvent* event ) | 228 | void ZoneMap::viewportMousePressEvent( QMouseEvent* event ) |
229 | { | 229 | { |
230 | // add the mouse event into the normalizer, and get the average, | 230 | // add the mouse event into the normalizer, and get the average, |
231 | // pass it along | 231 | // pass it along |
232 | slotRedraw(); | 232 | slotRedraw(); |
233 | norm.start(); | 233 | norm.start(); |
234 | norm.addEvent( event->pos() ); | 234 | norm.addEvent( event->pos() ); |
235 | } | 235 | } |
236 | 236 | ||
237 | void ZoneMap::viewportMouseMoveEvent( QMouseEvent* event ) | 237 | void ZoneMap::viewportMouseMoveEvent( QMouseEvent* event ) |
238 | { | 238 | { |
239 | norm.addEvent( event->pos() ); | 239 | norm.addEvent( event->pos() ); |
240 | } | 240 | } |
241 | 241 | ||
242 | void ZoneMap::viewportMouseReleaseEvent( QMouseEvent* ) | 242 | void ZoneMap::viewportMouseReleaseEvent( QMouseEvent* ) |
243 | { | 243 | { |
244 | // get the averaged points in case a timeout hasn't occurred, | 244 | // get the averaged points in case a timeout hasn't occurred, |
245 | // more for "mouse clicks" | 245 | // more for "mouse clicks" |
246 | norm.stop(); | 246 | norm.stop(); |
247 | if ( pLast != NULL ) { | 247 | if ( pLast != NULL ) { |
248 | emit signalTz( pLast->country(), pLast->city() ); | 248 | emit signalTz( pLast->country(), pLast->city() ); |
249 | pLast = NULL; | 249 | pLast = NULL; |
250 | } | 250 | } |
251 | tHide->start( 2000, true ); | 251 | tHide->start( 2000, true ); |
252 | } | 252 | } |
253 | 253 | ||
254 | void ZoneMap::keyPressEvent( QKeyEvent *ke ) | 254 | void ZoneMap::keyPressEvent( QKeyEvent *ke ) |
255 | { | 255 | { |
256 | switch ( ke->key() ) { | 256 | switch ( ke->key() ) { |
257 | case Key_Left: | 257 | case Key_Left: |
258 | case Key_Right: | 258 | case Key_Right: |
259 | case Key_Up: | 259 | case Key_Up: |
260 | case Key_Down: { | 260 | case Key_Down: { |
261 | tHide->stop(); | 261 | tHide->stop(); |
262 | if ( !cursor ) | 262 | if ( !cursor ) |
263 | slotFindCity( QPoint( contentsWidth(), contentsHeight() ) / 2 ); | 263 | slotFindCity( QPoint( contentsWidth(), contentsHeight() ) / 2 ); |
264 | ZoneField *city = findCityNear( cursor, ke->key() ); | 264 | ZoneField *city = findCityNear( cursor, ke->key() ); |
265 | if ( city ) { | 265 | if ( city ) { |
266 | cursor = city; | 266 | cursor = city; |
267 | int tmpx, tmpy; | 267 | int tmpx, tmpy; |
268 | zoneToWin( cursor->x(), cursor->y(), tmpx, tmpy ); | 268 | zoneToWin( cursor->x(), cursor->y(), tmpx, tmpy ); |
269 | ensureVisible( tmpx, tmpy ); | 269 | ensureVisible( tmpx, tmpy ); |
270 | showCity( cursor ); | 270 | showCity( cursor ); |
271 | tHide->start( 3000, true ); | 271 | tHide->start( 3000, true ); |
272 | } | 272 | } |
273 | } | 273 | } |
274 | break; | 274 | break; |
275 | 275 | ||
276 | case Key_Space: | 276 | case Key_Space: |
277 | case Key_Enter: | 277 | case Key_Enter: |
278 | case Key_Return: | 278 | case Key_Return: |
279 | if ( cursor ) { | 279 | if ( cursor ) { |
280 | emit signalTz( cursor->country(), cursor->city() ); | 280 | emit signalTz( cursor->country(), cursor->city() ); |
281 | tHide->start( 0, true ); | 281 | tHide->start( 0, true ); |
282 | } | 282 | } |
283 | break; | 283 | break; |
284 | } | 284 | } |
285 | } | 285 | } |
286 | 286 | ||
287 | ZoneField *ZoneMap::findCityNear( ZoneField *city, int key ) | 287 | ZoneField *ZoneMap::findCityNear( ZoneField *city, int key ) |
288 | { | 288 | { |
289 | ZoneField *pZone; | 289 | ZoneField *pZone; |
290 | ZoneField *pClosest = 0; | 290 | ZoneField *pClosest = 0; |
291 | long ddist = LONG_MAX; | 291 | long ddist = LONG_MAX; |
@@ -373,229 +373,229 @@ void ZoneMap::showCity( ZoneField *city ) | |||
373 | pLast = city; | 373 | pLast = city; |
374 | // we'll use city and country a couple of times, get them to save some | 374 | // we'll use city and country a couple of times, get them to save some |
375 | // time | 375 | // time |
376 | QString strCity = pLast->city(); | 376 | QString strCity = pLast->city(); |
377 | QString strCountry = pLast->country(); | 377 | QString strCountry = pLast->country(); |
378 | // Display the time at this location by setting the environment timezone | 378 | // Display the time at this location by setting the environment timezone |
379 | // getting the current time [there] and then swapping back the variable | 379 | // getting the current time [there] and then swapping back the variable |
380 | // so no one notices... | 380 | // so no one notices... |
381 | QString strSave; | 381 | QString strSave; |
382 | char *p = getenv( "TZ" ); | 382 | char *p = getenv( "TZ" ); |
383 | if ( p ) { | 383 | if ( p ) { |
384 | strSave = p; | 384 | strSave = p; |
385 | } | 385 | } |
386 | // set the timezone :) | 386 | // set the timezone :) |
387 | setenv( "TZ", strCountry + strCity, true ); | 387 | setenv( "TZ", strCountry + strCity, true ); |
388 | lblCity->setText( strCity.replace( QRegExp("_"), " ") + "\n" + | 388 | lblCity->setText( strCity.replace( QRegExp("_"), " ") + "\n" + |
389 | TimeString::shortTime( ampm ) ); | 389 | TimeString::shortTime( ampm ) ); |
390 | lblCity->setMinimumSize( lblCity->sizeHint() ); | 390 | lblCity->setMinimumSize( lblCity->sizeHint() ); |
391 | // undue our damage... | 391 | // undue our damage... |
392 | unsetenv( "TZ" ); | 392 | unsetenv( "TZ" ); |
393 | if ( p ) | 393 | if ( p ) |
394 | setenv( "TZ", strSave, true ); | 394 | setenv( "TZ", strSave, true ); |
395 | // Now decide where to move the label, x & y can be reused | 395 | // Now decide where to move the label, x & y can be reused |
396 | int tmpx, tmpy, x, y; | 396 | int tmpx, tmpy, x, y; |
397 | zoneToWin( pLast->x(), pLast->y(), tmpx, tmpy ); | 397 | zoneToWin( pLast->x(), pLast->y(), tmpx, tmpy ); |
398 | contentsToViewport(tmpx, tmpy, x, y); | 398 | contentsToViewport(tmpx, tmpy, x, y); |
399 | if ( lblCity->width() > drawableW - x ) { | 399 | if ( lblCity->width() > drawableW - x ) { |
400 | // oops... try putting it on the right | 400 | // oops... try putting it on the right |
401 | x = x - lblCity->width() - iLABELOFFSET; | 401 | x = x - lblCity->width() - iLABELOFFSET; |
402 | } else { | 402 | } else { |
403 | // the default... | 403 | // the default... |
404 | x += iLABELOFFSET; | 404 | x += iLABELOFFSET; |
405 | } | 405 | } |
406 | if ( lblCity->height() > drawableH - y ) { | 406 | if ( lblCity->height() > drawableH - y ) { |
407 | // move it up... | 407 | // move it up... |
408 | y = y - lblCity->height() - iLABELOFFSET; | 408 | y = y - lblCity->height() - iLABELOFFSET; |
409 | } else if ( y < 0 ) { | 409 | } else if ( y < 0 ) { |
410 | // the city is actually off the screen... | 410 | // the city is actually off the screen... |
411 | // this only happens on the a zoom when you are near the top, | 411 | // this only happens on the a zoom when you are near the top, |
412 | // a quick workaround.. | 412 | // a quick workaround.. |
413 | y = iLABELOFFSET; | 413 | y = iLABELOFFSET; |
414 | } else { | 414 | } else { |
415 | // the default | 415 | // the default |
416 | y += iLABELOFFSET; | 416 | y += iLABELOFFSET; |
417 | } | 417 | } |
418 | 418 | ||
419 | // draw in the city and the label | 419 | // draw in the city and the label |
420 | if ( pRepaint ) { | 420 | if ( pRepaint ) { |
421 | int repx, | 421 | int repx, |
422 | repy; | 422 | repy; |
423 | zoneToWin( pRepaint->x(), pRepaint->y(), repx, repy ); | 423 | zoneToWin( pRepaint->x(), pRepaint->y(), repx, repy ); |
424 | updateContents( repx - iCITYOFFSET, repy - iCITYOFFSET, | 424 | updateContents( repx - iCITYOFFSET, repy - iCITYOFFSET, |
425 | iCITYSIZE, iCITYSIZE ); | 425 | iCITYSIZE, iCITYSIZE ); |
426 | } | 426 | } |
427 | updateContents( tmpx - iCITYOFFSET, tmpy - iCITYOFFSET, iCITYSIZE, | 427 | updateContents( tmpx - iCITYOFFSET, tmpy - iCITYOFFSET, iCITYSIZE, |
428 | iCITYSIZE ); | 428 | iCITYSIZE ); |
429 | pRepaint = pLast; | 429 | pRepaint = pLast; |
430 | 430 | ||
431 | lblCity->move( x, y ); | 431 | lblCity->move( x, y ); |
432 | lblCity->show(); | 432 | lblCity->show(); |
433 | } | 433 | } |
434 | 434 | ||
435 | void ZoneMap::resizeEvent( QResizeEvent *e ) | 435 | void ZoneMap::resizeEvent( QResizeEvent *e ) |
436 | { | 436 | { |
437 | // keep the zoom button down in the corner | 437 | // keep the zoom button down in the corner |
438 | QSize _size = e->size(); | 438 | QSize _size = e->size(); |
439 | cmdZoom->move( _size.width() - cmdZoom->width(), | 439 | cmdZoom->move( _size.width() - cmdZoom->width(), |
440 | _size.height() - cmdZoom->height() ); | 440 | _size.height() - cmdZoom->height() ); |
441 | if ( !bZoom ) { | 441 | if ( !bZoom ) { |
442 | drawableW = width() - 2 * frameWidth(); | 442 | drawableW = width() - 2 * frameWidth(); |
443 | drawableH = height() - 2 * frameWidth(); | 443 | drawableH = height() - 2 * frameWidth(); |
444 | makeMap( drawableW, drawableH ); | 444 | makeMap( drawableW, drawableH ); |
445 | resizeContents( drawableW, drawableH ); | 445 | resizeContents( drawableW, drawableH ); |
446 | } | 446 | } |
447 | } | 447 | } |
448 | 448 | ||
449 | void ZoneMap::showZones( void ) const | 449 | void ZoneMap::showZones( void ) const |
450 | { | 450 | { |
451 | // go through the zones in the list and just display the values... | 451 | // go through the zones in the list and just display the values... |
452 | QListIterator<ZoneField> itZone( zones ); | 452 | QListIterator<ZoneField> itZone( zones ); |
453 | for ( itZone.toFirst(); itZone.current(); ++itZone ) { | 453 | for ( itZone.toFirst(); itZone.current(); ++itZone ) { |
454 | ZoneField *pZone = itZone.current(); | 454 | ZoneField *pZone = itZone.current(); |
455 | pZone->showStructure(); | 455 | pZone->showStructure(); |
456 | } | 456 | } |
457 | } | 457 | } |
458 | 458 | ||
459 | 459 | ||
460 | QWidget* ZoneMap::selectionWidget( QWidget *parent) { | 460 | QWidget* ZoneMap::selectionWidget( QWidget *parent) { |
461 | 461 | ||
462 | QWidget *returnWidget = new QWidget( parent ); | 462 | QWidget *returnWidget = new QWidget( parent ); |
463 | 463 | ||
464 | QVBoxLayout *layout = new QVBoxLayout( returnWidget ); | 464 | QVBoxLayout *layout = new QVBoxLayout( returnWidget ); |
465 | QHBox *hBox = new QHBox( returnWidget ); | 465 | QHBox *hBox = new QHBox( returnWidget ); |
466 | QListView *continentView = new QListView( hBox ); | 466 | QListView *continentView = new QListView( hBox ); |
467 | continentView->addColumn( tr("Continent") ); | 467 | continentView->addColumn( tr("Continent") ); |
468 | QWhatsThis::add( continentView, tr("Select a continent/country here, then select a city") ); | 468 | QWhatsThis::add( continentView, tr("Select a continent/country here, then select a city") ); |
469 | connect ( continentView, SIGNAL( clicked ( QListViewItem * ) ), this, SLOT( slotGetCities( QListViewItem * ) ) ); | 469 | connect ( continentView, SIGNAL( clicked(QListViewItem*) ), this, SLOT( slotGetCities(QListViewItem*) ) ); |
470 | 470 | ||
471 | QStringList continentList; | 471 | QStringList continentList; |
472 | QListIterator<ZoneField> itZone( zones ); | 472 | QListIterator<ZoneField> itZone( zones ); |
473 | for ( itZone.toFirst(); itZone.current(); ++itZone ) { | 473 | for ( itZone.toFirst(); itZone.current(); ++itZone ) { |
474 | ZoneField *pZone = itZone.current(); | 474 | ZoneField *pZone = itZone.current(); |
475 | if ( continentList.contains( pZone->country() ) == 0 ) { | 475 | if ( continentList.contains( pZone->country() ) == 0 ) { |
476 | QString name; | 476 | QString name; |
477 | QListViewItem *item; | 477 | QListViewItem *item; |
478 | if ( !(pZone->country().length() > 24) ) { | 478 | if ( !(pZone->country().length() > 24) ) { |
479 | name = pZone->country().left(pZone->country().length()-1 ); | 479 | name = pZone->country().left(pZone->country().length()-1 ); |
480 | } else { | 480 | } else { |
481 | name = pZone->country().left( 24 ); | 481 | name = pZone->country().left( 24 ); |
482 | } | 482 | } |
483 | item = new QListViewItem( continentView, name, pZone->country() ); | 483 | item = new QListViewItem( continentView, name, pZone->country() ); |
484 | continentList.append( pZone->country() ); | 484 | continentList.append( pZone->country() ); |
485 | } | 485 | } |
486 | } | 486 | } |
487 | 487 | ||
488 | cityView = new QListView( hBox ); | 488 | cityView = new QListView( hBox ); |
489 | cityView->addColumn( tr("City") ); | 489 | cityView->addColumn( tr("City") ); |
490 | 490 | ||
491 | layout->addWidget( hBox ); | 491 | layout->addWidget( hBox ); |
492 | return returnWidget; | 492 | return returnWidget; |
493 | } | 493 | } |
494 | 494 | ||
495 | void ZoneMap::slotGetCities( QListViewItem * contItem) { | 495 | void ZoneMap::slotGetCities( QListViewItem * contItem) { |
496 | 496 | ||
497 | cityView->clear(); | 497 | cityView->clear(); |
498 | selectedCont = contItem->text( 1 ); | 498 | selectedCont = contItem->text( 1 ); |
499 | QListIterator<ZoneField> itZone( zones ); | 499 | QListIterator<ZoneField> itZone( zones ); |
500 | for ( itZone.toFirst(); itZone.current(); ++itZone ) { | 500 | for ( itZone.toFirst(); itZone.current(); ++itZone ) { |
501 | ZoneField *pZone = itZone.current(); | 501 | ZoneField *pZone = itZone.current(); |
502 | if ( pZone->country() == contItem->text( 1 ) ) { | 502 | if ( pZone->country() == contItem->text( 1 ) ) { |
503 | QListViewItem *item; | 503 | QListViewItem *item; |
504 | item = new QListViewItem( cityView, pZone->city() ); | 504 | item = new QListViewItem( cityView, pZone->city() ); |
505 | connect ( cityView, SIGNAL( clicked ( QListViewItem* ) ), this, SLOT( slotCitySelected( QListViewItem* ) ) ); | 505 | connect ( cityView, SIGNAL( clicked(QListViewItem*) ), this, SLOT( slotCitySelected(QListViewItem*) ) ); |
506 | } | 506 | } |
507 | } | 507 | } |
508 | } | 508 | } |
509 | 509 | ||
510 | void ZoneMap::slotCitySelected( QListViewItem *cityItem ) { | 510 | void ZoneMap::slotCitySelected( QListViewItem *cityItem ) { |
511 | if ( cityItem ) { | 511 | if ( cityItem ) { |
512 | emit signalTz( selectedCont, cityItem->text( 0 ) ); | 512 | emit signalTz( selectedCont, cityItem->text( 0 ) ); |
513 | } | 513 | } |
514 | } | 514 | } |
515 | 515 | ||
516 | void ZoneMap::drawCities( QPainter *p ) | 516 | void ZoneMap::drawCities( QPainter *p ) |
517 | { | 517 | { |
518 | int x, y, j; | 518 | int x, y, j; |
519 | // draw in the cities | 519 | // draw in the cities |
520 | // for testing only as when you put it | 520 | // for testing only as when you put it |
521 | // on the small screen it looks awful and not to mention useless | 521 | // on the small screen it looks awful and not to mention useless |
522 | p->setPen( red ); | 522 | p->setPen( red ); |
523 | QListIterator<ZoneField> itZone( zones ); | 523 | QListIterator<ZoneField> itZone( zones ); |
524 | for ( itZone.toFirst(), j = 0; itZone.current(); ++itZone, j++ ) { | 524 | for ( itZone.toFirst(), j = 0; itZone.current(); ++itZone, j++ ) { |
525 | ZoneField *pZone = itZone.current(); | 525 | ZoneField *pZone = itZone.current(); |
526 | zoneToWin( pZone->x(), pZone->y(), x, y ); | 526 | zoneToWin( pZone->x(), pZone->y(), x, y ); |
527 | if ( x > wImg ) | 527 | if ( x > wImg ) |
528 | x = x - wImg; | 528 | x = x - wImg; |
529 | p->drawRect( x - iCITYOFFSET, y - iCITYOFFSET, iCITYSIZE, iCITYSIZE); | 529 | p->drawRect( x - iCITYOFFSET, y - iCITYOFFSET, iCITYSIZE, iCITYSIZE); |
530 | } | 530 | } |
531 | } | 531 | } |
532 | 532 | ||
533 | static void dayNight(QImage *pImage) | 533 | static void dayNight(QImage *pImage) |
534 | { | 534 | { |
535 | // create a mask the functions from sun.h | 535 | // create a mask the functions from sun.h |
536 | double dJulian, | 536 | double dJulian, |
537 | dSunRad, | 537 | dSunRad, |
538 | dSunDecl, | 538 | dSunDecl, |
539 | dSunRadius, | 539 | dSunRadius, |
540 | dSunLong; | 540 | dSunLong; |
541 | int wImage = pImage->width(), | 541 | int wImage = pImage->width(), |
542 | hImage = pImage->height(), | 542 | hImage = pImage->height(), |
543 | iStart, | 543 | iStart, |
544 | iStop, | 544 | iStop, |
545 | iMid, | 545 | iMid, |
546 | relw, | 546 | relw, |
547 | i; | 547 | i; |
548 | short wtab[ wImage ]; | 548 | short wtab[ wImage ]; |
549 | time_t tCurrent; | 549 | time_t tCurrent; |
550 | struct tm *pTm; | 550 | struct tm *pTm; |
551 | 551 | ||
552 | // get the position of the sun bassed on our current time... | 552 | // get the position of the sun bassed on our current time... |
553 | tCurrent = time( NULL ); | 553 | tCurrent = time( NULL ); |
554 | pTm = gmtime( &tCurrent ); | 554 | pTm = gmtime( &tCurrent ); |
555 | dJulian = jtime( pTm ); | 555 | dJulian = jtime( pTm ); |
556 | sunpos( dJulian, 0, &dSunRad, &dSunDecl, &dSunRadius, &dSunLong ); | 556 | sunpos( dJulian, 0, &dSunRad, &dSunDecl, &dSunRadius, &dSunLong ); |
557 | 557 | ||
558 | // now get the projected illumination | 558 | // now get the projected illumination |
559 | projillum( wtab, wImage, hImage, dSunDecl ); | 559 | projillum( wtab, wImage, hImage, dSunDecl ); |
560 | relw = wImage - int( wImage * 0.0275 ); | 560 | relw = wImage - int( wImage * 0.0275 ); |
561 | 561 | ||
562 | // draw the map, keeping in mind that we may go too far off the map... | 562 | // draw the map, keeping in mind that we may go too far off the map... |
563 | iMid = ( relw * ( 24*60 - pTm->tm_hour * 60 - pTm->tm_min ) ) / ( 24*60 ); | 563 | iMid = ( relw * ( 24*60 - pTm->tm_hour * 60 - pTm->tm_min ) ) / ( 24*60 ); |
564 | 564 | ||
565 | for ( i = 0; i < hImage; i++ ) { | 565 | for ( i = 0; i < hImage; i++ ) { |
566 | if ( wtab[i] > 0 ) { | 566 | if ( wtab[i] > 0 ) { |
567 | iStart = iMid - wtab[i]; | 567 | iStart = iMid - wtab[i]; |
568 | iStop = iMid + wtab[i]; | 568 | iStop = iMid + wtab[i]; |
569 | if ( iStart < 0 ) { | 569 | if ( iStart < 0 ) { |
570 | darken( pImage, iStop, wImage + iStart, i ); | 570 | darken( pImage, iStop, wImage + iStart, i ); |
571 | } else if ( iStop > wImage ) { | 571 | } else if ( iStop > wImage ) { |
572 | darken( pImage, iStop - wImage, iStart, i ); | 572 | darken( pImage, iStop - wImage, iStart, i ); |
573 | } else { | 573 | } else { |
574 | darken( pImage, 0, iStart, i ); | 574 | darken( pImage, 0, iStart, i ); |
575 | darken( pImage, iStop, wImage, i ); | 575 | darken( pImage, iStop, wImage, i ); |
576 | } | 576 | } |
577 | } else { | 577 | } else { |
578 | darken( pImage, 0, wImage, i ); | 578 | darken( pImage, 0, wImage, i ); |
579 | } | 579 | } |
580 | } | 580 | } |
581 | } | 581 | } |
582 | 582 | ||
583 | static inline void darken( QImage *pImage, int start, int stop, int row ) | 583 | static inline void darken( QImage *pImage, int start, int stop, int row ) |
584 | { | 584 | { |
585 | int colors, | 585 | int colors, |
586 | j; | 586 | j; |
587 | uchar *p; | 587 | uchar *p; |
588 | 588 | ||
589 | // assume that the image is similar to the one we have... | 589 | // assume that the image is similar to the one we have... |
590 | colors = pImage->numColors() / 2; | 590 | colors = pImage->numColors() / 2; |
591 | 591 | ||
592 | p = pImage->scanLine( row ); | 592 | p = pImage->scanLine( row ); |
593 | for ( j = start; j <= stop; j++ ) { | 593 | for ( j = start; j <= stop; j++ ) { |
594 | if ( p[j] < colors ) | 594 | if ( p[j] < colors ) |
595 | p[j] += colors; | 595 | p[j] += colors; |
596 | } | 596 | } |
597 | } | 597 | } |
598 | 598 | ||
599 | void ZoneMap::makeMap( int w, int h ) | 599 | void ZoneMap::makeMap( int w, int h ) |
600 | { | 600 | { |
601 | QImage imgOrig = Resource::loadImage( strMAP ); | 601 | QImage imgOrig = Resource::loadImage( strMAP ); |
diff --git a/core/settings/launcher/menusettings.cpp b/core/settings/launcher/menusettings.cpp index dc8e993..2b64c47 100644 --- a/core/settings/launcher/menusettings.cpp +++ b/core/settings/launcher/menusettings.cpp | |||
@@ -1,178 +1,178 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the OPIE Project | 2 | This file is part of the OPIE Project |
3 | =. Copyright (c) 2002 Trolltech AS <info@trolltech.com> | 3 | =. Copyright (c) 2002 Trolltech AS <info@trolltech.com> |
4 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> | 4 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> |
5 | .>+-= | 5 | .>+-= |
6 | _;:, .> :=|. This file is free software; you can | 6 | _;:, .> :=|. This file is free software; you can |
7 | .> <`_, > . <= redistribute it and/or modify it under | 7 | .> <`_, > . <= redistribute it and/or modify it under |
8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
9 | .="- .-=="i, .._ License as published by the Free Software | 9 | .="- .-=="i, .._ License as published by the Free Software |
10 | - . .-<_> .<> Foundation; either version 2 of the License, | 10 | - . .-<_> .<> Foundation; either version 2 of the License, |
11 | ._= =} : or (at your option) any later version. | 11 | ._= =} : or (at your option) any later version. |
12 | .%`+i> _;_. | 12 | .%`+i> _;_. |
13 | .i_,=:_. -<s. This file is distributed in the hope that | 13 | .i_,=:_. -<s. This file is distributed in the hope that |
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
15 | : .. .:, . . . without even the implied warranty of | 15 | : .. .:, . . . without even the implied warranty of |
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | 17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
18 | ..}^=.= = ; Public License for more details. | 18 | ..}^=.= = ; Public License for more details. |
19 | ++= -. .` .: | 19 | ++= -. .` .: |
20 | : = ...= . :.=- You should have received a copy of the GNU | 20 | : = ...= . :.=- You should have received a copy of the GNU |
21 | -. .:....=;==+<; General Public License along with this file; | 21 | -. .:....=;==+<; General Public License along with this file; |
22 | -_. . . )=. = see the file COPYING. If not, write to the | 22 | -_. . . )=. = see the file COPYING. If not, write to the |
23 | -- :-=` Free Software Foundation, Inc., | 23 | -- :-=` Free Software Foundation, Inc., |
24 | 59 Temple Place - Suite 330, | 24 | 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "menusettings.h" | 29 | #include "menusettings.h" |
30 | 30 | ||
31 | #include <qpe/config.h> | 31 | #include <qpe/config.h> |
32 | #include <qpe/qlibrary.h> | 32 | #include <qpe/qlibrary.h> |
33 | #include <qpe/qpeapplication.h> | 33 | #include <qpe/qpeapplication.h> |
34 | #include <qpe/menuappletinterface.h> | 34 | #include <qpe/menuappletinterface.h> |
35 | #include <qpe/qcopenvelope_qws.h> | 35 | #include <qpe/qcopenvelope_qws.h> |
36 | 36 | ||
37 | #include <qdir.h> | 37 | #include <qdir.h> |
38 | #include <qlistview.h> | 38 | #include <qlistview.h> |
39 | #include <qcheckbox.h> | 39 | #include <qcheckbox.h> |
40 | #include <qheader.h> | 40 | #include <qheader.h> |
41 | #include <qlayout.h> | 41 | #include <qlayout.h> |
42 | #include <qlabel.h> | 42 | #include <qlabel.h> |
43 | #include <qwhatsthis.h> | 43 | #include <qwhatsthis.h> |
44 | 44 | ||
45 | #include <stdlib.h> | 45 | #include <stdlib.h> |
46 | 46 | ||
47 | 47 | ||
48 | MenuSettings::MenuSettings ( QWidget *parent, const char *name ) | 48 | MenuSettings::MenuSettings ( QWidget *parent, const char *name ) |
49 | : QWidget ( parent, name ) | 49 | : QWidget ( parent, name ) |
50 | { | 50 | { |
51 | m_applets_changed = false; | 51 | m_applets_changed = false; |
52 | 52 | ||
53 | QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); | 53 | QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); |
54 | 54 | ||
55 | QLabel *l = new QLabel ( tr( "Load applets in O-Menu:" ), this ); | 55 | QLabel *l = new QLabel ( tr( "Load applets in O-Menu:" ), this ); |
56 | lay-> addWidget ( l ); | 56 | lay-> addWidget ( l ); |
57 | 57 | ||
58 | m_list = new QListView ( this ); | 58 | m_list = new QListView ( this ); |
59 | m_list-> addColumn ( "foobar" ); | 59 | m_list-> addColumn ( "foobar" ); |
60 | m_list-> header ( )-> hide ( ); | 60 | m_list-> header ( )-> hide ( ); |
61 | 61 | ||
62 | lay-> addWidget ( m_list ); | 62 | lay-> addWidget ( m_list ); |
63 | 63 | ||
64 | m_menutabs = new QCheckBox ( tr( "Show Launcher tabs in O-Menu" ), this ); | 64 | m_menutabs = new QCheckBox ( tr( "Show Launcher tabs in O-Menu" ), this ); |
65 | lay-> addWidget ( m_menutabs ); | 65 | lay-> addWidget ( m_menutabs ); |
66 | 66 | ||
67 | m_menusubpopup = new QCheckBox ( tr( "Show Applications in Subpopups" ), this ); | 67 | m_menusubpopup = new QCheckBox ( tr( "Show Applications in Subpopups" ), this ); |
68 | lay-> addWidget ( m_menusubpopup ); | 68 | lay-> addWidget ( m_menusubpopup ); |
69 | 69 | ||
70 | QWhatsThis::add ( m_list, tr( "Check the applets that you want to have included in the O-Menu." )); | 70 | QWhatsThis::add ( m_list, tr( "Check the applets that you want to have included in the O-Menu." )); |
71 | QWhatsThis::add ( m_menutabs, tr( "Adds the contents of the Launcher Tabs as menus in the O-Menu." )); | 71 | QWhatsThis::add ( m_menutabs, tr( "Adds the contents of the Launcher Tabs as menus in the O-Menu." )); |
72 | 72 | ||
73 | connect ( m_list, SIGNAL( clicked ( QListViewItem * )), this, SLOT( appletChanged ( ))); | 73 | connect ( m_list, SIGNAL( clicked(QListViewItem*)), this, SLOT( appletChanged())); |
74 | 74 | ||
75 | init ( ); | 75 | init ( ); |
76 | } | 76 | } |
77 | 77 | ||
78 | void MenuSettings::init ( ) | 78 | void MenuSettings::init ( ) |
79 | { | 79 | { |
80 | Config cfg ( "StartMenu" ); | 80 | Config cfg ( "StartMenu" ); |
81 | cfg. setGroup ( "Applets" ); | 81 | cfg. setGroup ( "Applets" ); |
82 | QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); | 82 | QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); |
83 | 83 | ||
84 | QString path = QPEApplication::qpeDir ( ) + "/plugins/applets"; | 84 | QString path = QPEApplication::qpeDir ( ) + "/plugins/applets"; |
85 | #ifdef Q_OS_MACX | 85 | #ifdef Q_OS_MACX |
86 | QStringList list = QDir ( path, "lib*.dylib" ). entryList ( ); | 86 | QStringList list = QDir ( path, "lib*.dylib" ). entryList ( ); |
87 | #else | 87 | #else |
88 | QStringList list = QDir ( path, "lib*.so" ). entryList ( ); | 88 | QStringList list = QDir ( path, "lib*.so" ). entryList ( ); |
89 | #endif /* Q_OS_MACX */ | 89 | #endif /* Q_OS_MACX */ |
90 | 90 | ||
91 | for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { | 91 | for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { |
92 | QString name; | 92 | QString name; |
93 | QPixmap icon; | 93 | QPixmap icon; |
94 | MenuAppletInterface *iface = 0; | 94 | MenuAppletInterface *iface = 0; |
95 | 95 | ||
96 | QLibrary *lib = new QLibrary ( path + "/" + *it ); | 96 | QLibrary *lib = new QLibrary ( path + "/" + *it ); |
97 | lib-> queryInterface ( IID_MenuApplet, (QUnknownInterface**) &iface ); | 97 | lib-> queryInterface ( IID_MenuApplet, (QUnknownInterface**) &iface ); |
98 | if ( iface ) { | 98 | if ( iface ) { |
99 | QString lang = getenv( "LANG" ); | 99 | QString lang = getenv( "LANG" ); |
100 | QTranslator *trans = new QTranslator ( qApp ); | 100 | QTranslator *trans = new QTranslator ( qApp ); |
101 | QString type = (*it). left ((*it). find (".")); | 101 | QString type = (*it). left ((*it). find (".")); |
102 | QString tfn = QPEApplication::qpeDir ( ) + "/i18n/" + lang + "/" + type + ".qm"; | 102 | QString tfn = QPEApplication::qpeDir ( ) + "/i18n/" + lang + "/" + type + ".qm"; |
103 | if ( trans-> load ( tfn )) | 103 | if ( trans-> load ( tfn )) |
104 | qApp-> installTranslator ( trans ); | 104 | qApp-> installTranslator ( trans ); |
105 | else | 105 | else |
106 | delete trans; | 106 | delete trans; |
107 | name = iface-> name ( ); | 107 | name = iface-> name ( ); |
108 | icon = iface-> icon ( ). pixmap ( QIconSet::Small, QIconSet::Normal ); | 108 | icon = iface-> icon ( ). pixmap ( QIconSet::Small, QIconSet::Normal ); |
109 | iface-> release ( ); | 109 | iface-> release ( ); |
110 | lib-> unload ( ); | 110 | lib-> unload ( ); |
111 | 111 | ||
112 | QCheckListItem *item; | 112 | QCheckListItem *item; |
113 | item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); | 113 | item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); |
114 | if ( !icon. isNull ( )) | 114 | if ( !icon. isNull ( )) |
115 | item-> setPixmap ( 0, icon ); | 115 | item-> setPixmap ( 0, icon ); |
116 | item-> setOn ( exclude. find ( *it ) == exclude. end ( )); | 116 | item-> setOn ( exclude. find ( *it ) == exclude. end ( )); |
117 | m_applets [*it] = item; | 117 | m_applets [*it] = item; |
118 | } else { | 118 | } else { |
119 | delete lib; | 119 | delete lib; |
120 | } | 120 | } |
121 | } | 121 | } |
122 | 122 | ||
123 | cfg. setGroup ( "Menu" ); | 123 | cfg. setGroup ( "Menu" ); |
124 | m_menutabs->setChecked( cfg.readBoolEntry( "LauncherTabs", true ) ); | 124 | m_menutabs->setChecked( cfg.readBoolEntry( "LauncherTabs", true ) ); |
125 | m_menusubpopup->setChecked( cfg.readBoolEntry( "LauncherSubPopup", true ) ); | 125 | m_menusubpopup->setChecked( cfg.readBoolEntry( "LauncherSubPopup", true ) ); |
126 | m_menusubpopup->setEnabled( m_menutabs->isChecked() ); | 126 | m_menusubpopup->setEnabled( m_menutabs->isChecked() ); |
127 | connect( m_menutabs, SIGNAL( stateChanged( int ) ), m_menusubpopup, SLOT( setEnabled( bool ) ) ); | 127 | connect( m_menutabs, SIGNAL( stateChanged(int) ), m_menusubpopup, SLOT( setEnabled(bool) ) ); |
128 | 128 | ||
129 | } | 129 | } |
130 | 130 | ||
131 | void MenuSettings::appletChanged() | 131 | void MenuSettings::appletChanged() |
132 | { | 132 | { |
133 | m_applets_changed = true; | 133 | m_applets_changed = true; |
134 | } | 134 | } |
135 | 135 | ||
136 | void MenuSettings::accept ( ) | 136 | void MenuSettings::accept ( ) |
137 | { | 137 | { |
138 | bool apps_changed = false; | 138 | bool apps_changed = false; |
139 | 139 | ||
140 | Config cfg ( "StartMenu" ); | 140 | Config cfg ( "StartMenu" ); |
141 | cfg. setGroup ( "Applets" ); | 141 | cfg. setGroup ( "Applets" ); |
142 | if ( m_applets_changed ) { | 142 | if ( m_applets_changed ) { |
143 | QStringList exclude; | 143 | QStringList exclude; |
144 | QMap <QString, QCheckListItem *>::Iterator it; | 144 | QMap <QString, QCheckListItem *>::Iterator it; |
145 | for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { | 145 | for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { |
146 | if ( !(*it)-> isOn ( )) | 146 | if ( !(*it)-> isOn ( )) |
147 | exclude << it. key ( ); | 147 | exclude << it. key ( ); |
148 | } | 148 | } |
149 | cfg. writeEntry ( "ExcludeApplets", exclude, ',' ); | 149 | cfg. writeEntry ( "ExcludeApplets", exclude, ',' ); |
150 | } | 150 | } |
151 | cfg. writeEntry ( "SafeMode", false ); | 151 | cfg. writeEntry ( "SafeMode", false ); |
152 | 152 | ||
153 | cfg. setGroup ( "Menu" ); | 153 | cfg. setGroup ( "Menu" ); |
154 | 154 | ||
155 | if ( m_menutabs-> isChecked ( ) != cfg. readBoolEntry ( "LauncherTabs", true )) { | 155 | if ( m_menutabs-> isChecked ( ) != cfg. readBoolEntry ( "LauncherTabs", true )) { |
156 | apps_changed = true; | 156 | apps_changed = true; |
157 | cfg. writeEntry ( "LauncherTabs", m_menutabs-> isChecked ( )); | 157 | cfg. writeEntry ( "LauncherTabs", m_menutabs-> isChecked ( )); |
158 | } | 158 | } |
159 | 159 | ||
160 | if ( m_menusubpopup-> isChecked ( ) != cfg. readBoolEntry ( "LauncherSubPopup", true )) { | 160 | if ( m_menusubpopup-> isChecked ( ) != cfg. readBoolEntry ( "LauncherSubPopup", true )) { |
161 | apps_changed = true; | 161 | apps_changed = true; |
162 | cfg. writeEntry ( "LauncherSubPopup", m_menusubpopup-> isChecked ( )); | 162 | cfg. writeEntry ( "LauncherSubPopup", m_menusubpopup-> isChecked ( )); |
163 | } | 163 | } |
164 | 164 | ||
165 | cfg. write ( ); | 165 | cfg. write ( ); |
166 | 166 | ||
167 | if ( m_applets_changed ) { | 167 | if ( m_applets_changed ) { |
168 | QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); | 168 | QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); |
169 | m_applets_changed = false; | 169 | m_applets_changed = false; |
170 | } | 170 | } |
171 | if ( apps_changed ) { | 171 | if ( apps_changed ) { |
172 | // currently use reloadApplets() since reloadApps is now used exclusive for server | 172 | // currently use reloadApplets() since reloadApps is now used exclusive for server |
173 | // to refresh the tabs. But what we want here is also a refresh of the startmenu entries | 173 | // to refresh the tabs. But what we want here is also a refresh of the startmenu entries |
174 | QCopEnvelope ( "QPE/TaskBar", "reloadApps()" ); | 174 | QCopEnvelope ( "QPE/TaskBar", "reloadApps()" ); |
175 | QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); | 175 | QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); |
176 | } | 176 | } |
177 | } | 177 | } |
178 | 178 | ||
diff --git a/core/settings/launcher/tabdialog.cpp b/core/settings/launcher/tabdialog.cpp index f79ad40..c0d1cf2 100644 --- a/core/settings/launcher/tabdialog.cpp +++ b/core/settings/launcher/tabdialog.cpp | |||
@@ -226,288 +226,288 @@ public: | |||
226 | setBackgroundType ( TabConfig::Ruled, QString::null ); | 226 | setBackgroundType ( TabConfig::Ruled, QString::null ); |
227 | QColorGroup cg = colorGroup ( ); | 227 | QColorGroup cg = colorGroup ( ); |
228 | cg.setColor ( QColorGroup::Text, m_textcolor ); | 228 | cg.setColor ( QColorGroup::Text, m_textcolor ); |
229 | setPalette ( QPalette ( cg, cg, cg )); | 229 | setPalette ( QPalette ( cg, cg, cg )); |
230 | 230 | ||
231 | excllock = false; | 231 | excllock = false; |
232 | } | 232 | } |
233 | 233 | ||
234 | void setBackgroundPixmap ( const QPixmap &pm ) | 234 | void setBackgroundPixmap ( const QPixmap &pm ) |
235 | { | 235 | { |
236 | m_bgpix = pm; | 236 | m_bgpix = pm; |
237 | } | 237 | } |
238 | 238 | ||
239 | void setBackgroundColor ( const QColor &c ) | 239 | void setBackgroundColor ( const QColor &c ) |
240 | { | 240 | { |
241 | m_bgcolor = c; | 241 | m_bgcolor = c; |
242 | } | 242 | } |
243 | 243 | ||
244 | void drawBackground ( QPainter *p, const QRect &r ) | 244 | void drawBackground ( QPainter *p, const QRect &r ) |
245 | { | 245 | { |
246 | if ( !m_bgpix. isNull ( )) { | 246 | if ( !m_bgpix. isNull ( )) { |
247 | p-> drawTiledPixmap ( r, m_bgpix, QPoint (( r. x ( ) + contentsX ( )) % m_bgpix. width ( ), | 247 | p-> drawTiledPixmap ( r, m_bgpix, QPoint (( r. x ( ) + contentsX ( )) % m_bgpix. width ( ), |
248 | ( r. y ( ) + contentsY ( )) % m_bgpix. height ( ))); | 248 | ( r. y ( ) + contentsY ( )) % m_bgpix. height ( ))); |
249 | } | 249 | } |
250 | else | 250 | else |
251 | p-> fillRect ( r, m_bgcolor ); | 251 | p-> fillRect ( r, m_bgcolor ); |
252 | } | 252 | } |
253 | 253 | ||
254 | private: | 254 | private: |
255 | QColor m_textcolor; | 255 | QColor m_textcolor; |
256 | QColor m_bgcolor; | 256 | QColor m_bgcolor; |
257 | QPixmap m_bgpix; | 257 | QPixmap m_bgpix; |
258 | TabConfig::BackgroundType m_bgtype; | 258 | TabConfig::BackgroundType m_bgtype; |
259 | }; | 259 | }; |
260 | 260 | ||
261 | 261 | ||
262 | 262 | ||
263 | TabDialog::TabDialog ( const QPixmap *tabicon, const QString &tabname, TabConfig &tc, QWidget *parent, const char *dname, bool modal, WFlags fl ) | 263 | TabDialog::TabDialog ( const QPixmap *tabicon, const QString &tabname, TabConfig &tc, QWidget *parent, const char *dname, bool modal, WFlags fl ) |
264 | : QDialog ( parent, dname, modal, fl | WStyle_ContextHelp ), m_tc ( tc ) | 264 | : QDialog ( parent, dname, modal, fl | WStyle_ContextHelp ), m_tc ( tc ) |
265 | { | 265 | { |
266 | setCaption ( tr( "Edit Tab" )); | 266 | setCaption ( tr( "Edit Tab" )); |
267 | 267 | ||
268 | QVBoxLayout *lay = new QVBoxLayout ( this, 3, 3 ); | 268 | QVBoxLayout *lay = new QVBoxLayout ( this, 3, 3 ); |
269 | 269 | ||
270 | OTabWidget *tw = new OTabWidget ( this, "tabwidget", OTabWidget::Global, OTabWidget::Bottom ); | 270 | OTabWidget *tw = new OTabWidget ( this, "tabwidget", OTabWidget::Global, OTabWidget::Bottom ); |
271 | QWidget *bgtab; | 271 | QWidget *bgtab; |
272 | 272 | ||
273 | tw-> addTab ( bgtab = createBgTab ( tw ), "appearance/color", tr( "Background" )); | 273 | tw-> addTab ( bgtab = createBgTab ( tw ), "appearance/color", tr( "Background" )); |
274 | tw-> addTab ( createFontTab ( tw ), "font", tr( "Font" )); | 274 | tw-> addTab ( createFontTab ( tw ), "font", tr( "Font" )); |
275 | tw-> addTab ( createIconTab ( tw ), "pixmap", tr( "Icons" ) ); | 275 | tw-> addTab ( createIconTab ( tw ), "pixmap", tr( "Icons" ) ); |
276 | 276 | ||
277 | tw-> setCurrentTab ( bgtab ); | 277 | tw-> setCurrentTab ( bgtab ); |
278 | 278 | ||
279 | QWidget *sample = new QVBox ( this ); | 279 | QWidget *sample = new QVBox ( this ); |
280 | QTabBar *tb = new QTabBar ( sample ); | 280 | QTabBar *tb = new QTabBar ( sample ); |
281 | QString name ( tr( "Previewing %1" ). arg ( tabname )); | 281 | QString name ( tr( "Previewing %1" ). arg ( tabname )); |
282 | 282 | ||
283 | tb-> addTab ( tabicon ? new QTab ( *tabicon, name ) : new QTab ( name )); | 283 | tb-> addTab ( tabicon ? new QTab ( *tabicon, name ) : new QTab ( name )); |
284 | 284 | ||
285 | m_sample = new SampleView ( sample ); | 285 | m_sample = new SampleView ( sample ); |
286 | 286 | ||
287 | lay-> addWidget ( tw, 10 ); | 287 | lay-> addWidget ( tw, 10 ); |
288 | lay-> addWidget ( sample, 1 ); | 288 | lay-> addWidget ( sample, 1 ); |
289 | 289 | ||
290 | m_iconsize-> setButton ( tc. m_view ); | 290 | m_iconsize-> setButton ( tc. m_view ); |
291 | iconSizeClicked ( tc. m_view ); | 291 | iconSizeClicked ( tc. m_view ); |
292 | //m_iconcolor-> setColor ( QColor ( m_tc. m_text_color )); | 292 | //m_iconcolor-> setColor ( QColor ( m_tc. m_text_color )); |
293 | iconColorClicked ( m_iconcolor-> color ( )); | 293 | iconColorClicked ( m_iconcolor-> color ( )); |
294 | m_bgtype-> setButton ( tc. m_bg_type ); | 294 | m_bgtype-> setButton ( tc. m_bg_type ); |
295 | //m_solidcolor-> setColor ( QColor ( tc. m_bg_color )); | 295 | //m_solidcolor-> setColor ( QColor ( tc. m_bg_color )); |
296 | m_bgimage = tc. m_bg_image; | 296 | m_bgimage = tc. m_bg_image; |
297 | bgTypeClicked ( tc. m_bg_type ); | 297 | bgTypeClicked ( tc. m_bg_type ); |
298 | m_fontuse-> setChecked ( tc. m_font_use ); | 298 | m_fontuse-> setChecked ( tc. m_font_use ); |
299 | m_fontselect-> setSelectedFont ( QFont ( tc. m_font_family, tc. m_font_size, tc. m_font_weight, tc. m_font_italic )); | 299 | m_fontselect-> setSelectedFont ( QFont ( tc. m_font_family, tc. m_font_size, tc. m_font_weight, tc. m_font_italic )); |
300 | m_fontselect-> setEnabled ( m_fontuse-> isChecked ( )); | 300 | m_fontselect-> setEnabled ( m_fontuse-> isChecked ( )); |
301 | fontClicked ( m_fontselect-> selectedFont ( )); | 301 | fontClicked ( m_fontselect-> selectedFont ( )); |
302 | 302 | ||
303 | QWhatsThis::add ( sample, tr( "This is a rough preview of what the currently selected Tab will look like." )); | 303 | QWhatsThis::add ( sample, tr( "This is a rough preview of what the currently selected Tab will look like." )); |
304 | } | 304 | } |
305 | 305 | ||
306 | 306 | ||
307 | TabDialog::~TabDialog ( ) | 307 | TabDialog::~TabDialog ( ) |
308 | { | 308 | { |
309 | } | 309 | } |
310 | 310 | ||
311 | QWidget *TabDialog::createFontTab ( QWidget *parent ) | 311 | QWidget *TabDialog::createFontTab ( QWidget *parent ) |
312 | { | 312 | { |
313 | QWidget *tab = new QWidget ( parent, "FontTab" ); | 313 | QWidget *tab = new QWidget ( parent, "FontTab" ); |
314 | QVBoxLayout *vertLayout = new QVBoxLayout ( tab, 3, 3 ); | 314 | QVBoxLayout *vertLayout = new QVBoxLayout ( tab, 3, 3 ); |
315 | 315 | ||
316 | m_fontuse = new QCheckBox ( tr( "Use a custom font" ), tab ); | 316 | m_fontuse = new QCheckBox ( tr( "Use a custom font" ), tab ); |
317 | vertLayout-> addWidget ( m_fontuse ); | 317 | vertLayout-> addWidget ( m_fontuse ); |
318 | 318 | ||
319 | m_fontselect = new OFontSelector ( false, tab, "fontsel" ); | 319 | m_fontselect = new OFontSelector ( false, tab, "fontsel" ); |
320 | vertLayout-> addWidget ( m_fontselect ); | 320 | vertLayout-> addWidget ( m_fontselect ); |
321 | 321 | ||
322 | connect ( m_fontuse, SIGNAL( toggled ( bool )), m_fontselect, SLOT( setEnabled ( bool ))); | 322 | connect ( m_fontuse, SIGNAL( toggled(bool)), m_fontselect, SLOT( setEnabled(bool))); |
323 | connect( m_fontselect, SIGNAL( fontSelected ( const QFont & )), | 323 | connect( m_fontselect, SIGNAL( fontSelected(const QFont&)), |
324 | this, SLOT( fontClicked ( const QFont & ))); | 324 | this, SLOT( fontClicked(const QFont&))); |
325 | 325 | ||
326 | return tab; | 326 | return tab; |
327 | } | 327 | } |
328 | 328 | ||
329 | QWidget *TabDialog::createBgTab ( QWidget *parent ) | 329 | QWidget *TabDialog::createBgTab ( QWidget *parent ) |
330 | { | 330 | { |
331 | QWidget *tab = new QWidget( parent, "BgTab" ); | 331 | QWidget *tab = new QWidget( parent, "BgTab" ); |
332 | QVBoxLayout *vertLayout = new QVBoxLayout( tab, 3, 3 ); | 332 | QVBoxLayout *vertLayout = new QVBoxLayout( tab, 3, 3 ); |
333 | 333 | ||
334 | QGridLayout* gridLayout = new QGridLayout ( vertLayout ); | 334 | QGridLayout* gridLayout = new QGridLayout ( vertLayout ); |
335 | gridLayout-> setColStretch ( 1, 10 ); | 335 | gridLayout-> setColStretch ( 1, 10 ); |
336 | 336 | ||
337 | QLabel* label = new QLabel( tr( "Type:" ), tab ); | 337 | QLabel* label = new QLabel( tr( "Type:" ), tab ); |
338 | gridLayout-> addWidget ( label, 0, 0 ); | 338 | gridLayout-> addWidget ( label, 0, 0 ); |
339 | m_bgtype = new QButtonGroup( tab, "buttongroup" ); | 339 | m_bgtype = new QButtonGroup( tab, "buttongroup" ); |
340 | m_bgtype-> hide ( ); | 340 | m_bgtype-> hide ( ); |
341 | m_bgtype-> setExclusive ( true ); | 341 | m_bgtype-> setExclusive ( true ); |
342 | 342 | ||
343 | QRadioButton *rb; | 343 | QRadioButton *rb; |
344 | rb = new QRadioButton( tr( "Ruled" ), tab, "ruled" ); | 344 | rb = new QRadioButton( tr( "Ruled" ), tab, "ruled" ); |
345 | m_bgtype-> insert ( rb, TabConfig::Ruled ); | 345 | m_bgtype-> insert ( rb, TabConfig::Ruled ); |
346 | gridLayout-> addWidget( rb, 0, 1 ); | 346 | gridLayout-> addWidget( rb, 0, 1 ); |
347 | 347 | ||
348 | QHBoxLayout *hb = new QHBoxLayout ( ); | 348 | QHBoxLayout *hb = new QHBoxLayout ( ); |
349 | hb-> setSpacing ( 3 ); | 349 | hb-> setSpacing ( 3 ); |
350 | 350 | ||
351 | rb = new QRadioButton( tr( "Solid color" ), tab, "solid" ); | 351 | rb = new QRadioButton( tr( "Solid color" ), tab, "solid" ); |
352 | m_bgtype-> insert ( rb, TabConfig::SolidColor ); | 352 | m_bgtype-> insert ( rb, TabConfig::SolidColor ); |
353 | hb-> addWidget ( rb ); | 353 | hb-> addWidget ( rb ); |
354 | hb-> addSpacing ( 10 ); | 354 | hb-> addSpacing ( 10 ); |
355 | 355 | ||
356 | m_solidcolor = new OColorButton ( tab, QColor ( m_tc. m_bg_color ) ); | 356 | m_solidcolor = new OColorButton ( tab, QColor ( m_tc. m_bg_color ) ); |
357 | connect ( m_solidcolor, SIGNAL( colorSelected ( const QColor & )), this, SLOT( bgColorClicked ( const QColor & ))); | 357 | connect ( m_solidcolor, SIGNAL( colorSelected(const QColor&)), this, SLOT( bgColorClicked(const QColor&))); |
358 | hb-> addWidget ( m_solidcolor ); | 358 | hb-> addWidget ( m_solidcolor ); |
359 | hb-> addStretch ( 10 ); | 359 | hb-> addStretch ( 10 ); |
360 | 360 | ||
361 | gridLayout-> addLayout ( hb, 1, 1 ); | 361 | gridLayout-> addLayout ( hb, 1, 1 ); |
362 | 362 | ||
363 | hb = new QHBoxLayout ( ); | 363 | hb = new QHBoxLayout ( ); |
364 | hb-> setSpacing ( 3 ); | 364 | hb-> setSpacing ( 3 ); |
365 | 365 | ||
366 | rb = new QRadioButton( tr( "Image" ), tab, "image" ); | 366 | rb = new QRadioButton( tr( "Image" ), tab, "image" ); |
367 | m_bgtype-> insert ( rb, TabConfig::Image ); | 367 | m_bgtype-> insert ( rb, TabConfig::Image ); |
368 | hb-> addWidget( rb ); | 368 | hb-> addWidget( rb ); |
369 | hb-> addSpacing ( 10 ); | 369 | hb-> addSpacing ( 10 ); |
370 | 370 | ||
371 | m_imagebrowse = new QPushButton ( tr( "Select..." ), tab ); | 371 | m_imagebrowse = new QPushButton ( tr( "Select..." ), tab ); |
372 | connect ( m_imagebrowse, SIGNAL( clicked ( )), this, SLOT( bgImageClicked ( ))); | 372 | connect ( m_imagebrowse, SIGNAL( clicked()), this, SLOT( bgImageClicked())); |
373 | hb-> addWidget ( m_imagebrowse ); | 373 | hb-> addWidget ( m_imagebrowse ); |
374 | hb-> addStretch ( 10 ); | 374 | hb-> addStretch ( 10 ); |
375 | 375 | ||
376 | gridLayout-> addLayout ( hb, 2, 1 ); | 376 | gridLayout-> addLayout ( hb, 2, 1 ); |
377 | 377 | ||
378 | QPushButton *p = new QPushButton ( tr( "Default" ), tab ); | 378 | QPushButton *p = new QPushButton ( tr( "Default" ), tab ); |
379 | connect ( p, SIGNAL( clicked ( )), this, SLOT( bgDefaultClicked ( ))); | 379 | connect ( p, SIGNAL( clicked()), this, SLOT( bgDefaultClicked())); |
380 | gridLayout-> addWidget ( p, 3, 1 ); | 380 | gridLayout-> addWidget ( p, 3, 1 ); |
381 | 381 | ||
382 | connect ( m_bgtype, SIGNAL( clicked ( int )), this, SLOT( bgTypeClicked ( int ))); | 382 | connect ( m_bgtype, SIGNAL( clicked(int)), this, SLOT( bgTypeClicked(int))); |
383 | 383 | ||
384 | vertLayout-> addStretch ( 10 ); | 384 | vertLayout-> addStretch ( 10 ); |
385 | 385 | ||
386 | return tab; | 386 | return tab; |
387 | } | 387 | } |
388 | 388 | ||
389 | QWidget *TabDialog::createIconTab ( QWidget *parent ) | 389 | QWidget *TabDialog::createIconTab ( QWidget *parent ) |
390 | { | 390 | { |
391 | QWidget *tab = new QWidget( parent, "IconTab" ); | 391 | QWidget *tab = new QWidget( parent, "IconTab" ); |
392 | QVBoxLayout *vertLayout = new QVBoxLayout( tab, 3, 3 ); | 392 | QVBoxLayout *vertLayout = new QVBoxLayout( tab, 3, 3 ); |
393 | 393 | ||
394 | QGridLayout* gridLayout = new QGridLayout ( vertLayout ); | 394 | QGridLayout* gridLayout = new QGridLayout ( vertLayout ); |
395 | gridLayout-> setColStretch ( 1, 10 ); | 395 | gridLayout-> setColStretch ( 1, 10 ); |
396 | 396 | ||
397 | QLabel* label = new QLabel( tr( "Size:" ), tab ); | 397 | QLabel* label = new QLabel( tr( "Size:" ), tab ); |
398 | gridLayout-> addWidget ( label, 0, 0 ); | 398 | gridLayout-> addWidget ( label, 0, 0 ); |
399 | m_iconsize = new QButtonGroup( tab, "buttongroup" ); | 399 | m_iconsize = new QButtonGroup( tab, "buttongroup" ); |
400 | m_iconsize-> hide ( ); | 400 | m_iconsize-> hide ( ); |
401 | m_iconsize-> setExclusive ( true ); | 401 | m_iconsize-> setExclusive ( true ); |
402 | 402 | ||
403 | QRadioButton *rb; | 403 | QRadioButton *rb; |
404 | rb = new QRadioButton( tr( "Small" ), tab, "iconsmall" ); | 404 | rb = new QRadioButton( tr( "Small" ), tab, "iconsmall" ); |
405 | m_iconsize-> insert ( rb, TabConfig::List ); | 405 | m_iconsize-> insert ( rb, TabConfig::List ); |
406 | gridLayout-> addWidget( rb, 0, 1 ); | 406 | gridLayout-> addWidget( rb, 0, 1 ); |
407 | 407 | ||
408 | rb = new QRadioButton( tr( "Large" ), tab, "iconlarge" ); | 408 | rb = new QRadioButton( tr( "Large" ), tab, "iconlarge" ); |
409 | m_iconsize-> insert ( rb, TabConfig::Icon ); | 409 | m_iconsize-> insert ( rb, TabConfig::Icon ); |
410 | gridLayout-> addWidget( rb, 1, 1 ); | 410 | gridLayout-> addWidget( rb, 1, 1 ); |
411 | 411 | ||
412 | connect ( m_iconsize, SIGNAL( clicked ( int )), this, SLOT( iconSizeClicked ( int ))); | 412 | connect ( m_iconsize, SIGNAL( clicked(int)), this, SLOT( iconSizeClicked(int))); |
413 | 413 | ||
414 | //vertLayout-> addSpacing ( 8 ); | 414 | //vertLayout-> addSpacing ( 8 ); |
415 | 415 | ||
416 | //gridLayout = new QGridLayout ( vertLayout ); | 416 | //gridLayout = new QGridLayout ( vertLayout ); |
417 | gridLayout-> addRowSpacing ( 2, 8 ); | 417 | gridLayout-> addRowSpacing ( 2, 8 ); |
418 | 418 | ||
419 | label = new QLabel ( tr( "Color:" ), tab ); | 419 | label = new QLabel ( tr( "Color:" ), tab ); |
420 | gridLayout-> addWidget ( label, 3, 0 ); | 420 | gridLayout-> addWidget ( label, 3, 0 ); |
421 | 421 | ||
422 | m_iconcolor = new OColorButton ( tab, QColor ( m_tc. m_text_color ) ); | 422 | m_iconcolor = new OColorButton ( tab, QColor ( m_tc. m_text_color ) ); |
423 | connect ( m_iconcolor, SIGNAL( colorSelected ( const QColor & )), this, SLOT( iconColorClicked ( const QColor & ))); | 423 | connect ( m_iconcolor, SIGNAL( colorSelected(const QColor&)), this, SLOT( iconColorClicked(const QColor&))); |
424 | gridLayout-> addWidget ( m_iconcolor, 3, 1, AlignLeft ); | 424 | gridLayout-> addWidget ( m_iconcolor, 3, 1, AlignLeft ); |
425 | 425 | ||
426 | vertLayout-> addStretch ( 10 ); | 426 | vertLayout-> addStretch ( 10 ); |
427 | 427 | ||
428 | return tab; | 428 | return tab; |
429 | } | 429 | } |
430 | 430 | ||
431 | 431 | ||
432 | void TabDialog::iconSizeClicked ( int s ) | 432 | void TabDialog::iconSizeClicked ( int s ) |
433 | { | 433 | { |
434 | m_sample-> setViewMode ((TabConfig::ViewMode) s ); | 434 | m_sample-> setViewMode ((TabConfig::ViewMode) s ); |
435 | } | 435 | } |
436 | 436 | ||
437 | void TabDialog::fontClicked ( const QFont &f ) | 437 | void TabDialog::fontClicked ( const QFont &f ) |
438 | { | 438 | { |
439 | m_sample-> setViewFont ( f ); | 439 | m_sample-> setViewFont ( f ); |
440 | } | 440 | } |
441 | 441 | ||
442 | void TabDialog::bgTypeClicked ( int t ) | 442 | void TabDialog::bgTypeClicked ( int t ) |
443 | { | 443 | { |
444 | QString s; | 444 | QString s; |
445 | 445 | ||
446 | if ( m_bgtype-> id ( m_bgtype-> selected ( )) != t ) | 446 | if ( m_bgtype-> id ( m_bgtype-> selected ( )) != t ) |
447 | m_bgtype-> setButton ( t ); | 447 | m_bgtype-> setButton ( t ); |
448 | 448 | ||
449 | m_solidcolor-> setEnabled ( t == TabConfig::SolidColor ); | 449 | m_solidcolor-> setEnabled ( t == TabConfig::SolidColor ); |
450 | m_imagebrowse-> setEnabled ( t == TabConfig::Image ); | 450 | m_imagebrowse-> setEnabled ( t == TabConfig::Image ); |
451 | 451 | ||
452 | if ( t == TabConfig::SolidColor ) | 452 | if ( t == TabConfig::SolidColor ) |
453 | s = m_solidcolor-> color ( ). name ( ); | 453 | s = m_solidcolor-> color ( ). name ( ); |
454 | else if ( t == TabConfig::Image ) | 454 | else if ( t == TabConfig::Image ) |
455 | s = Resource::findPixmap ( m_bgimage ); | 455 | s = Resource::findPixmap ( m_bgimage ); |
456 | 456 | ||
457 | m_sample-> setBackgroundType ((TabConfig::BackgroundType) t, s ); | 457 | m_sample-> setBackgroundType ((TabConfig::BackgroundType) t, s ); |
458 | } | 458 | } |
459 | 459 | ||
460 | void TabDialog::bgColorClicked ( const QColor & ) | 460 | void TabDialog::bgColorClicked ( const QColor & ) |
461 | { | 461 | { |
462 | bgTypeClicked ( TabConfig::SolidColor ); | 462 | bgTypeClicked ( TabConfig::SolidColor ); |
463 | } | 463 | } |
464 | 464 | ||
465 | void TabDialog::iconColorClicked ( const QColor &col ) | 465 | void TabDialog::iconColorClicked ( const QColor &col ) |
466 | { | 466 | { |
467 | m_sample-> setTextColor ( col ); | 467 | m_sample-> setTextColor ( col ); |
468 | } | 468 | } |
469 | 469 | ||
470 | void TabDialog::bgImageClicked ( ) | 470 | void TabDialog::bgImageClicked ( ) |
471 | { | 471 | { |
472 | // ### use OFileSelector here ### | 472 | // ### use OFileSelector here ### |
473 | // this is just a quick c&p from the old appearance app | 473 | // this is just a quick c&p from the old appearance app |
474 | 474 | ||
475 | MimeTypes types; | 475 | MimeTypes types; |
476 | QStringList list; | 476 | QStringList list; |
477 | list << "image/*"; | 477 | list << "image/*"; |
478 | types. insert ( "Images", list ); | 478 | types. insert ( "Images", list ); |
479 | 479 | ||
480 | QString file = OFileDialog::getOpenFileName ( 1, "/", QString::null, types ); | 480 | QString file = OFileDialog::getOpenFileName ( 1, "/", QString::null, types ); |
481 | if ( !file. isEmpty ( )) { | 481 | if ( !file. isEmpty ( )) { |
482 | m_bgimage = DocLnk ( file ). file ( ); | 482 | m_bgimage = DocLnk ( file ). file ( ); |
483 | bgTypeClicked ( TabConfig::Image ); | 483 | bgTypeClicked ( TabConfig::Image ); |
484 | } | 484 | } |
485 | } | 485 | } |
486 | 486 | ||
487 | void TabDialog::bgDefaultClicked ( ) | 487 | void TabDialog::bgDefaultClicked ( ) |
488 | { | 488 | { |
489 | m_bgimage = "launcher/opie-background"; | 489 | m_bgimage = "launcher/opie-background"; |
490 | bgTypeClicked ( TabConfig::Image ); | 490 | bgTypeClicked ( TabConfig::Image ); |
491 | } | 491 | } |
492 | 492 | ||
493 | void TabDialog::accept ( ) | 493 | void TabDialog::accept ( ) |
494 | { | 494 | { |
495 | m_tc. m_view = (TabConfig::ViewMode) m_iconsize-> id ( m_iconsize-> selected ( )); | 495 | m_tc. m_view = (TabConfig::ViewMode) m_iconsize-> id ( m_iconsize-> selected ( )); |
496 | m_tc. m_bg_type = (TabConfig::BackgroundType) m_bgtype-> id ( m_bgtype-> selected ( )); | 496 | m_tc. m_bg_type = (TabConfig::BackgroundType) m_bgtype-> id ( m_bgtype-> selected ( )); |
497 | m_tc. m_bg_color = m_solidcolor-> color ( ). name ( ); | 497 | m_tc. m_bg_color = m_solidcolor-> color ( ). name ( ); |
498 | m_tc. m_bg_image = m_bgimage; | 498 | m_tc. m_bg_image = m_bgimage; |
499 | m_tc. m_text_color = m_iconcolor-> color ( ). name ( ); | 499 | m_tc. m_text_color = m_iconcolor-> color ( ). name ( ); |
500 | 500 | ||
501 | m_tc. m_font_use = m_fontuse-> isChecked ( ); | 501 | m_tc. m_font_use = m_fontuse-> isChecked ( ); |
502 | 502 | ||
503 | if ( m_tc. m_font_use ) { | 503 | if ( m_tc. m_font_use ) { |
504 | QFont f = m_fontselect-> selectedFont ( ); | 504 | QFont f = m_fontselect-> selectedFont ( ); |
505 | 505 | ||
506 | m_tc. m_font_family = f. family ( ); | 506 | m_tc. m_font_family = f. family ( ); |
507 | m_tc. m_font_size = f. pointSize ( ); | 507 | m_tc. m_font_size = f. pointSize ( ); |
508 | m_tc. m_font_weight = f. weight ( ); | 508 | m_tc. m_font_weight = f. weight ( ); |
509 | m_tc. m_font_italic = f. italic ( ); | 509 | m_tc. m_font_italic = f. italic ( ); |
510 | } | 510 | } |
511 | 511 | ||
512 | QDialog::accept ( ); | 512 | QDialog::accept ( ); |
513 | } | 513 | } |
diff --git a/core/settings/launcher/tabssettings.cpp b/core/settings/launcher/tabssettings.cpp index 17a1609..e5a7087 100644 --- a/core/settings/launcher/tabssettings.cpp +++ b/core/settings/launcher/tabssettings.cpp | |||
@@ -1,173 +1,173 @@ | |||
1 | /* | 1 | /* |
2 | =. This file is part of the OPIE Project | 2 | =. This file is part of the OPIE Project |
3 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> | 3 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> |
4 | .>+-= | 4 | .>+-= |
5 | _;:, .> :=|. This file is free software; you can | 5 | _;:, .> :=|. This file is free software; you can |
6 | .> <`_, > . <= redistribute it and/or modify it under | 6 | .> <`_, > . <= redistribute it and/or modify it under |
7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This file is distributed in the hope that | 12 | .i_,=:_. -<s. This file is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
17 | ..}^=.= = ; Public License for more details. | 17 | ..}^=.= = ; Public License for more details. |
18 | ++= -. .` .: | 18 | ++= -. .` .: |
19 | : = ...= . :.=- You should have received a copy of the GNU | 19 | : = ...= . :.=- You should have received a copy of the GNU |
20 | -. .:....=;==+<; General Public License along with this file; | 20 | -. .:....=;==+<; General Public License along with this file; |
21 | -_. . . )=. = see the file COPYING. If not, write to the | 21 | -_. . . )=. = see the file COPYING. If not, write to the |
22 | -- :-=` Free Software Foundation, Inc., | 22 | -- :-=` Free Software Foundation, Inc., |
23 | 59 Temple Place - Suite 330, | 23 | 59 Temple Place - Suite 330, |
24 | Boston, MA 02111-1307, USA. | 24 | Boston, MA 02111-1307, USA. |
25 | 25 | ||
26 | */ | 26 | */ |
27 | 27 | ||
28 | #include "tabssettings.h" | 28 | #include "tabssettings.h" |
29 | 29 | ||
30 | #include <qpe/resource.h> | 30 | #include <qpe/resource.h> |
31 | #include <qpe/applnk.h> | 31 | #include <qpe/applnk.h> |
32 | #include <qpe/mimetype.h> | 32 | #include <qpe/mimetype.h> |
33 | #include <qpe/qcopenvelope_qws.h> | 33 | #include <qpe/qcopenvelope_qws.h> |
34 | #include <qpe/config.h> | 34 | #include <qpe/config.h> |
35 | #include <qpe/qpeapplication.h> | 35 | #include <qpe/qpeapplication.h> |
36 | 36 | ||
37 | #include <qlistbox.h> | 37 | #include <qlistbox.h> |
38 | #include <qpushbutton.h> | 38 | #include <qpushbutton.h> |
39 | #include <qlayout.h> | 39 | #include <qlayout.h> |
40 | #include <qlabel.h> | 40 | #include <qlabel.h> |
41 | #include <qwhatsthis.h> | 41 | #include <qwhatsthis.h> |
42 | #include <qcheckbox.h> | 42 | #include <qcheckbox.h> |
43 | 43 | ||
44 | #include "tabdialog.h" | 44 | #include "tabdialog.h" |
45 | 45 | ||
46 | #include <stdlib.h> | 46 | #include <stdlib.h> |
47 | #include <qmessagebox.h> | 47 | #include <qmessagebox.h> |
48 | 48 | ||
49 | 49 | ||
50 | #define GLOBALID ".global." | 50 | #define GLOBALID ".global." |
51 | 51 | ||
52 | 52 | ||
53 | TabsSettings::TabsSettings ( QWidget *parent, const char *name ) | 53 | TabsSettings::TabsSettings ( QWidget *parent, const char *name ) |
54 | : QWidget ( parent, name ) | 54 | : QWidget ( parent, name ) |
55 | { | 55 | { |
56 | QGridLayout *lay = new QGridLayout ( this, 0, 0, 4, 4 ); | 56 | QGridLayout *lay = new QGridLayout ( this, 0, 0, 4, 4 ); |
57 | 57 | ||
58 | QLabel *l = new QLabel ( tr( "Launcher Tabs:" ), this ); | 58 | QLabel *l = new QLabel ( tr( "Launcher Tabs:" ), this ); |
59 | lay-> addMultiCellWidget ( l, 0, 0, 0, 1 ); | 59 | lay-> addMultiCellWidget ( l, 0, 0, 0, 1 ); |
60 | 60 | ||
61 | m_list = new QListBox ( this ); | 61 | m_list = new QListBox ( this ); |
62 | lay-> addMultiCellWidget ( m_list, 1, 4, 0, 0 ); | 62 | lay-> addMultiCellWidget ( m_list, 1, 4, 0, 0 ); |
63 | 63 | ||
64 | QWhatsThis::add ( m_list, tr( "foobar" )); | 64 | QWhatsThis::add ( m_list, tr( "foobar" )); |
65 | 65 | ||
66 | QPushButton *p1, *p2, *p3; | 66 | QPushButton *p1, *p2, *p3; |
67 | p1 = new QPushButton ( tr( "New" ), this ); | 67 | p1 = new QPushButton ( tr( "New" ), this ); |
68 | lay-> addWidget ( p1, 1, 1 ); | 68 | lay-> addWidget ( p1, 1, 1 ); |
69 | connect ( p1, SIGNAL( clicked ( )), this, SLOT( newClicked ( ))); | 69 | connect ( p1, SIGNAL( clicked()), this, SLOT( newClicked())); |
70 | 70 | ||
71 | p2 = new QPushButton ( tr( "Edit" ), this ); | 71 | p2 = new QPushButton ( tr( "Edit" ), this ); |
72 | lay-> addWidget ( p2, 2, 1 ); | 72 | lay-> addWidget ( p2, 2, 1 ); |
73 | connect ( p2, SIGNAL( clicked ( )), this, SLOT( editClicked ( ))); | 73 | connect ( p2, SIGNAL( clicked()), this, SLOT( editClicked())); |
74 | 74 | ||
75 | p3 = new QPushButton ( tr( "Delete" ), this ); | 75 | p3 = new QPushButton ( tr( "Delete" ), this ); |
76 | lay-> addWidget ( p3, 3, 1 ); | 76 | lay-> addWidget ( p3, 3, 1 ); |
77 | connect ( p3, SIGNAL( clicked ( )), this, SLOT( deleteClicked ( ))); | 77 | connect ( p3, SIGNAL( clicked()), this, SLOT( deleteClicked())); |
78 | 78 | ||
79 | lay-> setRowStretch ( 4, 10 ); | 79 | lay-> setRowStretch ( 4, 10 ); |
80 | 80 | ||
81 | m_bigbusy = new QCheckBox( tr( "Enable big busy indicator" ), this ); | 81 | m_bigbusy = new QCheckBox( tr( "Enable big busy indicator" ), this ); |
82 | lay-> addMultiCellWidget ( m_bigbusy, 5, 5, 0, 1 ); | 82 | lay-> addMultiCellWidget ( m_bigbusy, 5, 5, 0, 1 ); |
83 | 83 | ||
84 | m_busyani = new QCheckBox ( tr( "Enable animated busy indicator" ), this ); | 84 | m_busyani = new QCheckBox ( tr( "Enable animated busy indicator" ), this ); |
85 | lay-> addMultiCellWidget ( m_busyani, 6, 6, 0, 1 ); | 85 | lay-> addMultiCellWidget ( m_busyani, 6, 6, 0, 1 ); |
86 | 86 | ||
87 | p1-> setEnabled ( false ); | 87 | p1-> setEnabled ( false ); |
88 | p3-> setEnabled ( false ); | 88 | p3-> setEnabled ( false ); |
89 | 89 | ||
90 | init ( ); | 90 | init ( ); |
91 | 91 | ||
92 | QWhatsThis::add ( m_list, tr( "Select the Launcher Tab you want to edit or delete." )); | 92 | QWhatsThis::add ( m_list, tr( "Select the Launcher Tab you want to edit or delete." )); |
93 | QWhatsThis::add ( p1, tr( "Adds a new Tab to the Launcher." ) + QString ( "<center><br><i>not yet implemented</i><br>Please use the tabmanager</center>." )); | 93 | QWhatsThis::add ( p1, tr( "Adds a new Tab to the Launcher." ) + QString ( "<center><br><i>not yet implemented</i><br>Please use the tabmanager</center>." )); |
94 | QWhatsThis::add ( p2, tr( "Opens a new dialog to customize the select Tab." )); | 94 | QWhatsThis::add ( p2, tr( "Opens a new dialog to customize the select Tab." )); |
95 | QWhatsThis::add ( p3, tr( "Deletes a Tab from the Launcher." ) + QString ( "<center><br><i>not yet implemented</i><br>Please use the tabmanager</center>." )); | 95 | QWhatsThis::add ( p3, tr( "Deletes a Tab from the Launcher." ) + QString ( "<center><br><i>not yet implemented</i><br>Please use the tabmanager</center>." )); |
96 | QWhatsThis::add ( m_bigbusy, tr( "Activate this, if you want a big busy indicator in the middle of the screen instead of the one in taskbar." )); | 96 | QWhatsThis::add ( m_bigbusy, tr( "Activate this, if you want a big busy indicator in the middle of the screen instead of the one in taskbar." )); |
97 | QWhatsThis::add ( m_busyani, tr( "Activate this, if you want an animatedbusy indicator for starting applications in the Launcher." )); | 97 | QWhatsThis::add ( m_busyani, tr( "Activate this, if you want an animatedbusy indicator for starting applications in the Launcher." )); |
98 | } | 98 | } |
99 | 99 | ||
100 | void TabsSettings::init ( ) | 100 | void TabsSettings::init ( ) |
101 | { | 101 | { |
102 | AppLnkSet rootFolder( MimeType::appsFolderName ( )); | 102 | AppLnkSet rootFolder( MimeType::appsFolderName ( )); |
103 | QStringList types = rootFolder. types ( ); | 103 | QStringList types = rootFolder. types ( ); |
104 | 104 | ||
105 | m_list-> insertItem ( tr( "All Tabs" )); | 105 | m_list-> insertItem ( tr( "All Tabs" )); |
106 | m_ids << GLOBALID; | 106 | m_ids << GLOBALID; |
107 | 107 | ||
108 | for ( QStringList::Iterator it = types. begin ( ); it != types. end ( ); ++it ) { | 108 | for ( QStringList::Iterator it = types. begin ( ); it != types. end ( ); ++it ) { |
109 | m_list-> insertItem ( rootFolder. typePixmap ( *it ), rootFolder. typeName ( *it )); | 109 | m_list-> insertItem ( rootFolder. typePixmap ( *it ), rootFolder. typeName ( *it )); |
110 | m_ids << *it; | 110 | m_ids << *it; |
111 | } | 111 | } |
112 | QImage img ( Resource::loadImage ( "DocsIcon" )); | 112 | QImage img ( Resource::loadImage ( "DocsIcon" )); |
113 | QPixmap pix; | 113 | QPixmap pix; |
114 | pix = img. smoothScale ( AppLnk::smallIconSize ( ), AppLnk::smallIconSize ( )); | 114 | pix = img. smoothScale ( AppLnk::smallIconSize ( ), AppLnk::smallIconSize ( )); |
115 | m_list-> insertItem ( pix, tr( "Documents" )); | 115 | m_list-> insertItem ( pix, tr( "Documents" )); |
116 | m_ids += "Documents"; // No tr | 116 | m_ids += "Documents"; // No tr |
117 | 117 | ||
118 | Config cfg ( "Launcher" ); | 118 | Config cfg ( "Launcher" ); |
119 | 119 | ||
120 | readTabSettings ( cfg ); | 120 | readTabSettings ( cfg ); |
121 | 121 | ||
122 | cfg. setGroup ( "GUI" ); | 122 | cfg. setGroup ( "GUI" ); |
123 | m_busyani-> setChecked ( cfg. readEntry ( "BusyType" ). lower ( ) == "animated" ); | 123 | m_busyani-> setChecked ( cfg. readEntry ( "BusyType" ). lower ( ) == "animated" ); |
124 | m_bigbusy->setChecked( cfg. readBoolEntry ( "BigBusy" ) ); | 124 | m_bigbusy->setChecked( cfg. readBoolEntry ( "BigBusy" ) ); |
125 | } | 125 | } |
126 | 126 | ||
127 | 127 | ||
128 | void TabsSettings::readTabSettings ( Config &cfg ) | 128 | void TabsSettings::readTabSettings ( Config &cfg ) |
129 | { | 129 | { |
130 | QString grp ( "Tab %1" ); // No tr | 130 | QString grp ( "Tab %1" ); // No tr |
131 | m_tabs. clear ( ); | 131 | m_tabs. clear ( ); |
132 | 132 | ||
133 | TabConfig global_def; | 133 | TabConfig global_def; |
134 | global_def. m_view = TabConfig::Icon; | 134 | global_def. m_view = TabConfig::Icon; |
135 | global_def. m_bg_type = TabConfig::Ruled; | 135 | global_def. m_bg_type = TabConfig::Ruled; |
136 | global_def. m_bg_image = "launcher/opie-background"; | 136 | global_def. m_bg_image = "launcher/opie-background"; |
137 | global_def. m_bg_color = colorGroup ( ). color ( QColorGroup::Base ). name ( ); | 137 | global_def. m_bg_color = colorGroup ( ). color ( QColorGroup::Base ). name ( ); |
138 | global_def. m_text_color = colorGroup ( ). color ( QColorGroup::Text ). name ( ); | 138 | global_def. m_text_color = colorGroup ( ). color ( QColorGroup::Text ). name ( ); |
139 | global_def. m_font_use = false; | 139 | global_def. m_font_use = false; |
140 | global_def. m_font_family = font ( ). family ( ); | 140 | global_def. m_font_family = font ( ). family ( ); |
141 | global_def. m_font_size = font ( ). pointSize ( ); | 141 | global_def. m_font_size = font ( ). pointSize ( ); |
142 | global_def. m_font_weight = 50; | 142 | global_def. m_font_weight = 50; |
143 | global_def. m_font_italic = false; | 143 | global_def. m_font_italic = false; |
144 | global_def. m_changed = false; | 144 | global_def. m_changed = false; |
145 | 145 | ||
146 | 146 | ||
147 | for ( QStringList::Iterator it = m_ids. begin ( ); it != m_ids. end ( ); ++it ) { | 147 | for ( QStringList::Iterator it = m_ids. begin ( ); it != m_ids. end ( ); ++it ) { |
148 | TabConfig tc = ( it != m_ids. begin ( )) ? m_tabs [GLOBALID] : global_def; | 148 | TabConfig tc = ( it != m_ids. begin ( )) ? m_tabs [GLOBALID] : global_def; |
149 | 149 | ||
150 | cfg. setGroup ( grp. arg ( *it )); | 150 | cfg. setGroup ( grp. arg ( *it )); |
151 | 151 | ||
152 | QString view = cfg. readEntry ( "View" ); | 152 | QString view = cfg. readEntry ( "View" ); |
153 | if ( view == "Icon" ) // No tr | 153 | if ( view == "Icon" ) // No tr |
154 | tc. m_view = TabConfig::Icon; | 154 | tc. m_view = TabConfig::Icon; |
155 | if ( view == "List" ) // No tr | 155 | if ( view == "List" ) // No tr |
156 | tc. m_view = TabConfig::List; | 156 | tc. m_view = TabConfig::List; |
157 | 157 | ||
158 | QString bgType = cfg. readEntry ( "BackgroundType" ); | 158 | QString bgType = cfg. readEntry ( "BackgroundType" ); |
159 | if ( bgType == "Image" ) | 159 | if ( bgType == "Image" ) |
160 | tc. m_bg_type = TabConfig::Image; | 160 | tc. m_bg_type = TabConfig::Image; |
161 | else if ( bgType == "SolidColor" ) | 161 | else if ( bgType == "SolidColor" ) |
162 | tc. m_bg_type = TabConfig::SolidColor; | 162 | tc. m_bg_type = TabConfig::SolidColor; |
163 | else if ( bgType == "Image" ) // No tr | 163 | else if ( bgType == "Image" ) // No tr |
164 | tc. m_bg_type = TabConfig::Image; | 164 | tc. m_bg_type = TabConfig::Image; |
165 | 165 | ||
166 | tc. m_bg_image = cfg. readEntry ( "BackgroundImage", tc. m_bg_image ); | 166 | tc. m_bg_image = cfg. readEntry ( "BackgroundImage", tc. m_bg_image ); |
167 | tc. m_bg_color = cfg. readEntry ( "BackgroundColor", tc. m_bg_color ); | 167 | tc. m_bg_color = cfg. readEntry ( "BackgroundColor", tc. m_bg_color ); |
168 | tc. m_text_color = cfg. readEntry ( "TextColor", tc. m_text_color ); | 168 | tc. m_text_color = cfg. readEntry ( "TextColor", tc. m_text_color ); |
169 | QStringList f = cfg. readListEntry ( "Font", ',' ); | 169 | QStringList f = cfg. readListEntry ( "Font", ',' ); |
170 | if ( f. count ( ) == 4 ) { | 170 | if ( f. count ( ) == 4 ) { |
171 | tc. m_font_use = true; | 171 | tc. m_font_use = true; |
172 | tc. m_font_family = f [0]; | 172 | tc. m_font_family = f [0]; |
173 | tc. m_font_size = f [1]. toInt ( ); | 173 | tc. m_font_size = f [1]. toInt ( ); |
diff --git a/core/settings/launcher/taskbarsettings.cpp b/core/settings/launcher/taskbarsettings.cpp index badb98f..43886c9 100644 --- a/core/settings/launcher/taskbarsettings.cpp +++ b/core/settings/launcher/taskbarsettings.cpp | |||
@@ -1,161 +1,161 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the OPIE Project | 2 | This file is part of the OPIE Project |
3 | =. Copyright (c) 2002 Trolltech AS <info@trolltech.com> | 3 | =. Copyright (c) 2002 Trolltech AS <info@trolltech.com> |
4 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> | 4 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> |
5 | .>+-= | 5 | .>+-= |
6 | _;:, .> :=|. This file is free software; you can | 6 | _;:, .> :=|. This file is free software; you can |
7 | .> <`_, > . <= redistribute it and/or modify it under | 7 | .> <`_, > . <= redistribute it and/or modify it under |
8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
9 | .="- .-=="i, .._ License as published by the Free Software | 9 | .="- .-=="i, .._ License as published by the Free Software |
10 | - . .-<_> .<> Foundation; either version 2 of the License, | 10 | - . .-<_> .<> Foundation; either version 2 of the License, |
11 | ._= =} : or (at your option) any later version. | 11 | ._= =} : or (at your option) any later version. |
12 | .%`+i> _;_. | 12 | .%`+i> _;_. |
13 | .i_,=:_. -<s. This file is distributed in the hope that | 13 | .i_,=:_. -<s. This file is distributed in the hope that |
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
15 | : .. .:, . . . without even the implied warranty of | 15 | : .. .:, . . . without even the implied warranty of |
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | 17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
18 | ..}^=.= = ; Public License for more details. | 18 | ..}^=.= = ; Public License for more details. |
19 | ++= -. .` .: | 19 | ++= -. .` .: |
20 | : = ...= . :.=- You should have received a copy of the GNU | 20 | : = ...= . :.=- You should have received a copy of the GNU |
21 | -. .:....=;==+<; General Public License along with this file; | 21 | -. .:....=;==+<; General Public License along with this file; |
22 | -_. . . )=. = see the file COPYING. If not, write to the | 22 | -_. . . )=. = see the file COPYING. If not, write to the |
23 | -- :-=` Free Software Foundation, Inc., | 23 | -- :-=` Free Software Foundation, Inc., |
24 | 59 Temple Place - Suite 330, | 24 | 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "taskbarsettings.h" | 29 | #include "taskbarsettings.h" |
30 | 30 | ||
31 | #include <qpe/config.h> | 31 | #include <qpe/config.h> |
32 | #include <qpe/qlibrary.h> | 32 | #include <qpe/qlibrary.h> |
33 | #include <qpe/qpeapplication.h> | 33 | #include <qpe/qpeapplication.h> |
34 | #include <qpe/taskbarappletinterface.h> | 34 | #include <qpe/taskbarappletinterface.h> |
35 | #include <qpe/qcopenvelope_qws.h> | 35 | #include <qpe/qcopenvelope_qws.h> |
36 | 36 | ||
37 | #include <qdir.h> | 37 | #include <qdir.h> |
38 | #include <qlistview.h> | 38 | #include <qlistview.h> |
39 | #include <qheader.h> | 39 | #include <qheader.h> |
40 | #include <qlayout.h> | 40 | #include <qlayout.h> |
41 | #include <qlabel.h> | 41 | #include <qlabel.h> |
42 | #include <qwhatsthis.h> | 42 | #include <qwhatsthis.h> |
43 | 43 | ||
44 | #include <stdlib.h> | 44 | #include <stdlib.h> |
45 | 45 | ||
46 | 46 | ||
47 | TaskbarSettings::TaskbarSettings ( QWidget *parent, const char *name ) | 47 | TaskbarSettings::TaskbarSettings ( QWidget *parent, const char *name ) |
48 | : QWidget ( parent, name ) | 48 | : QWidget ( parent, name ) |
49 | { | 49 | { |
50 | m_applets_changed = false; | 50 | m_applets_changed = false; |
51 | 51 | ||
52 | QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); | 52 | QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); |
53 | 53 | ||
54 | QLabel *l = new QLabel ( tr( "Load applets in Taskbar:" ), this ); | 54 | QLabel *l = new QLabel ( tr( "Load applets in Taskbar:" ), this ); |
55 | lay-> addWidget ( l ); | 55 | lay-> addWidget ( l ); |
56 | 56 | ||
57 | m_list = new QListView ( this ); | 57 | m_list = new QListView ( this ); |
58 | m_list-> addColumn ( "foobar" ); | 58 | m_list-> addColumn ( "foobar" ); |
59 | m_list-> header ( )-> hide ( ); | 59 | m_list-> header ( )-> hide ( ); |
60 | 60 | ||
61 | lay-> addWidget ( m_list ); | 61 | lay-> addWidget ( m_list ); |
62 | 62 | ||
63 | QWhatsThis::add ( m_list, tr( "Check the applets that you want displayed in the Taskbar." )); | 63 | QWhatsThis::add ( m_list, tr( "Check the applets that you want displayed in the Taskbar." )); |
64 | 64 | ||
65 | connect ( m_list, SIGNAL( clicked ( QListViewItem * )), this, SLOT( appletChanged ( ))); | 65 | connect ( m_list, SIGNAL( clicked(QListViewItem*)), this, SLOT( appletChanged())); |
66 | 66 | ||
67 | init ( ); | 67 | init ( ); |
68 | } | 68 | } |
69 | 69 | ||
70 | void TaskbarSettings::init ( ) | 70 | void TaskbarSettings::init ( ) |
71 | { | 71 | { |
72 | Config cfg ( "Taskbar" ); | 72 | Config cfg ( "Taskbar" ); |
73 | cfg. setGroup ( "Applets" ); | 73 | cfg. setGroup ( "Applets" ); |
74 | QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); | 74 | QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); |
75 | 75 | ||
76 | QString path = QPEApplication::qpeDir ( ) + "/plugins/applets"; | 76 | QString path = QPEApplication::qpeDir ( ) + "/plugins/applets"; |
77 | #ifdef Q_OS_MACX | 77 | #ifdef Q_OS_MACX |
78 | QStringList list = QDir ( path, "lib*.dylib" ). entryList ( ); | 78 | QStringList list = QDir ( path, "lib*.dylib" ). entryList ( ); |
79 | #else | 79 | #else |
80 | QStringList list = QDir ( path, "lib*.so" ). entryList ( ); | 80 | QStringList list = QDir ( path, "lib*.so" ). entryList ( ); |
81 | #endif /* Q_OS_MACX */ | 81 | #endif /* Q_OS_MACX */ |
82 | 82 | ||
83 | for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { | 83 | for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { |
84 | QString name; | 84 | QString name; |
85 | QPixmap icon; | 85 | QPixmap icon; |
86 | TaskbarNamedAppletInterface *iface = 0; | 86 | TaskbarNamedAppletInterface *iface = 0; |
87 | 87 | ||
88 | qWarning("Load applet: %s", (*it).latin1() ); | 88 | qWarning("Load applet: %s", (*it).latin1() ); |
89 | QLibrary *lib = new QLibrary ( path + "/" + *it ); | 89 | QLibrary *lib = new QLibrary ( path + "/" + *it ); |
90 | lib-> queryInterface ( IID_TaskbarNamedApplet, (QUnknownInterface**) &iface ); | 90 | lib-> queryInterface ( IID_TaskbarNamedApplet, (QUnknownInterface**) &iface ); |
91 | qWarning("<1>"); | 91 | qWarning("<1>"); |
92 | if ( iface ) { | 92 | if ( iface ) { |
93 | qWarning("<2>"); | 93 | qWarning("<2>"); |
94 | QString lang = getenv( "LANG" ); | 94 | QString lang = getenv( "LANG" ); |
95 | QTranslator *trans = new QTranslator ( qApp ); | 95 | QTranslator *trans = new QTranslator ( qApp ); |
96 | QString type = (*it). left ((*it). find (".")); | 96 | QString type = (*it). left ((*it). find (".")); |
97 | QString tfn = QPEApplication::qpeDir ( ) + "/i18n/" + lang + "/" + type + ".qm"; | 97 | QString tfn = QPEApplication::qpeDir ( ) + "/i18n/" + lang + "/" + type + ".qm"; |
98 | if ( trans-> load ( tfn )) | 98 | if ( trans-> load ( tfn )) |
99 | qApp-> installTranslator ( trans ); | 99 | qApp-> installTranslator ( trans ); |
100 | else | 100 | else |
101 | delete trans; | 101 | delete trans; |
102 | name = iface-> name ( ); | 102 | name = iface-> name ( ); |
103 | icon = iface-> icon ( ); | 103 | icon = iface-> icon ( ); |
104 | iface-> release ( ); | 104 | iface-> release ( ); |
105 | } | 105 | } |
106 | qWarning("<3>"); | 106 | qWarning("<3>"); |
107 | if ( !iface ) { | 107 | if ( !iface ) { |
108 | qWarning("<4>"); | 108 | qWarning("<4>"); |
109 | lib-> queryInterface ( IID_TaskbarApplet, (QUnknownInterface**) &iface ); | 109 | lib-> queryInterface ( IID_TaskbarApplet, (QUnknownInterface**) &iface ); |
110 | 110 | ||
111 | if ( iface ) { | 111 | if ( iface ) { |
112 | qWarning("<5>"); | 112 | qWarning("<5>"); |
113 | name = (*it). mid ( 3 ); | 113 | name = (*it). mid ( 3 ); |
114 | qWarning("Found applet: %s", name.latin1() ); | 114 | qWarning("Found applet: %s", name.latin1() ); |
115 | #ifdef Q_OS_MACX | 115 | #ifdef Q_OS_MACX |
116 | int sep = name. find( ".dylib" ); | 116 | int sep = name. find( ".dylib" ); |
117 | #else | 117 | #else |
118 | int sep = name. find( ".so" ); | 118 | int sep = name. find( ".so" ); |
119 | #endif /* Q_OS_MACX */ | 119 | #endif /* Q_OS_MACX */ |
120 | if ( sep > 0 ) | 120 | if ( sep > 0 ) |
121 | name. truncate ( sep ); | 121 | name. truncate ( sep ); |
122 | sep = name. find ( "applet" ); | 122 | sep = name. find ( "applet" ); |
123 | if ( sep == (int) name.length ( ) - 6 ) | 123 | if ( sep == (int) name.length ( ) - 6 ) |
124 | name. truncate ( sep ); | 124 | name. truncate ( sep ); |
125 | name[0] = name[0]. upper ( ); | 125 | name[0] = name[0]. upper ( ); |
126 | iface-> release ( ); | 126 | iface-> release ( ); |
127 | } | 127 | } |
128 | } | 128 | } |
129 | qWarning("<6>"); | 129 | qWarning("<6>"); |
130 | 130 | ||
131 | if ( iface ) { | 131 | if ( iface ) { |
132 | qWarning("<7>"); | 132 | qWarning("<7>"); |
133 | QCheckListItem *item; | 133 | QCheckListItem *item; |
134 | item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); | 134 | item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); |
135 | if ( !icon. isNull ( )) | 135 | if ( !icon. isNull ( )) |
136 | item-> setPixmap ( 0, icon ); | 136 | item-> setPixmap ( 0, icon ); |
137 | item-> setOn ( exclude. find ( *it ) == exclude. end ( )); | 137 | item-> setOn ( exclude. find ( *it ) == exclude. end ( )); |
138 | m_applets [*it] = item; | 138 | m_applets [*it] = item; |
139 | } | 139 | } |
140 | lib-> unload ( ); | 140 | lib-> unload ( ); |
141 | delete lib; | 141 | delete lib; |
142 | } | 142 | } |
143 | } | 143 | } |
144 | 144 | ||
145 | void TaskbarSettings::appletChanged() | 145 | void TaskbarSettings::appletChanged() |
146 | { | 146 | { |
147 | m_applets_changed = true; | 147 | m_applets_changed = true; |
148 | } | 148 | } |
149 | 149 | ||
150 | void TaskbarSettings::accept ( ) | 150 | void TaskbarSettings::accept ( ) |
151 | { | 151 | { |
152 | Config cfg ( "Taskbar" ); | 152 | Config cfg ( "Taskbar" ); |
153 | cfg. setGroup ( "Applets" ); | 153 | cfg. setGroup ( "Applets" ); |
154 | 154 | ||
155 | if ( m_applets_changed ) { | 155 | if ( m_applets_changed ) { |
156 | QStringList exclude; | 156 | QStringList exclude; |
157 | QMap <QString, QCheckListItem *>::Iterator it; | 157 | QMap <QString, QCheckListItem *>::Iterator it; |
158 | for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { | 158 | for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { |
159 | if ( !(*it)-> isOn ( )) | 159 | if ( !(*it)-> isOn ( )) |
160 | exclude << it. key ( ); | 160 | exclude << it. key ( ); |
161 | } | 161 | } |
diff --git a/core/settings/light-and-power/light.cpp b/core/settings/light-and-power/light.cpp index 4baff8e..ce45836 100644 --- a/core/settings/light-and-power/light.cpp +++ b/core/settings/light-and-power/light.cpp | |||
@@ -79,229 +79,229 @@ LightSettings::LightSettings( QWidget* parent, const char* name, WFlags ) | |||
79 | QStrList freq = ODevice::inst()->allowedCpuFrequencies(); | 79 | QStrList freq = ODevice::inst()->allowedCpuFrequencies(); |
80 | if ( freq.count() ) { | 80 | if ( freq.count() ) { |
81 | frequency->insertStrList( freq ); | 81 | frequency->insertStrList( freq ); |
82 | frequency_ac->insertStrList( freq ); | 82 | frequency_ac->insertStrList( freq ); |
83 | } else { | 83 | } else { |
84 | frequencyLabel->hide(); | 84 | frequencyLabel->hide(); |
85 | frequency->hide(); | 85 | frequency->hide(); |
86 | frequencyLabel_ac->hide(); | 86 | frequencyLabel_ac->hide(); |
87 | frequency_ac->hide(); | 87 | frequency_ac->hide(); |
88 | } | 88 | } |
89 | 89 | ||
90 | // check whether to show the hinge action stuff | 90 | // check whether to show the hinge action stuff |
91 | 91 | ||
92 | if ( !ODevice::inst()->hasHingeSensor() ) { | 92 | if ( !ODevice::inst()->hasHingeSensor() ) { |
93 | closeHingeLabel->hide(); | 93 | closeHingeLabel->hide(); |
94 | closeHingeAction->hide(); | 94 | closeHingeAction->hide(); |
95 | closeHingeLabel_ac->hide(); | 95 | closeHingeLabel_ac->hide(); |
96 | closeHingeAction_ac->hide(); | 96 | closeHingeAction_ac->hide(); |
97 | } | 97 | } |
98 | 98 | ||
99 | Config config ( "apm" ); | 99 | Config config ( "apm" ); |
100 | config. setGroup ( "Battery" ); | 100 | config. setGroup ( "Battery" ); |
101 | 101 | ||
102 | // battery spinboxes | 102 | // battery spinboxes |
103 | interval_dim-> setValue ( config. readNumEntry ( "Dim", 30 )); | 103 | interval_dim-> setValue ( config. readNumEntry ( "Dim", 30 )); |
104 | interval_lightoff-> setValue ( config. readNumEntry ( "LightOff", 20 )); | 104 | interval_lightoff-> setValue ( config. readNumEntry ( "LightOff", 20 )); |
105 | interval_suspend-> setValue ( config. readNumEntry ( "Suspend", 60 )); | 105 | interval_suspend-> setValue ( config. readNumEntry ( "Suspend", 60 )); |
106 | 106 | ||
107 | // battery check and slider | 107 | // battery check and slider |
108 | LcdOffOnly->setChecked ( config. readBoolEntry ( "LcdOffOnly", false )); | 108 | LcdOffOnly->setChecked ( config. readBoolEntry ( "LcdOffOnly", false )); |
109 | 109 | ||
110 | // CPU frequency | 110 | // CPU frequency |
111 | frequency->setCurrentItem( config.readNumEntry("Freq", 0) ); | 111 | frequency->setCurrentItem( config.readNumEntry("Freq", 0) ); |
112 | 112 | ||
113 | // hinge action | 113 | // hinge action |
114 | closeHingeAction->setCurrentItem( config.readNumEntry("CloseHingeAction", 0) ); | 114 | closeHingeAction->setCurrentItem( config.readNumEntry("CloseHingeAction", 0) ); |
115 | 115 | ||
116 | int bright = config. readNumEntry ( "Brightness", 127 ); | 116 | int bright = config. readNumEntry ( "Brightness", 127 ); |
117 | int contr = m_oldcontrast = config. readNumEntry ( "Contrast", 127 ); | 117 | int contr = m_oldcontrast = config. readNumEntry ( "Contrast", 127 ); |
118 | brightness-> setTickInterval ( QMAX( 16, 256 / m_bres )); | 118 | brightness-> setTickInterval ( QMAX( 16, 256 / m_bres )); |
119 | brightness-> setLineStep ( QMAX( 1, 256 / m_bres )); | 119 | brightness-> setLineStep ( QMAX( 1, 256 / m_bres )); |
120 | brightness-> setPageStep ( QMAX( 1, 256 / m_bres )); | 120 | brightness-> setPageStep ( QMAX( 1, 256 / m_bres )); |
121 | brightness-> setValue ( bright ); | 121 | brightness-> setValue ( bright ); |
122 | 122 | ||
123 | if (m_cres) { | 123 | if (m_cres) { |
124 | contrast-> setTickInterval ( QMAX( 16, 256 / m_cres )); | 124 | contrast-> setTickInterval ( QMAX( 16, 256 / m_cres )); |
125 | contrast-> setLineStep ( QMAX( 1, 256 / m_cres )); | 125 | contrast-> setLineStep ( QMAX( 1, 256 / m_cres )); |
126 | contrast-> setPageStep ( QMAX( 1, 256 / m_cres )); | 126 | contrast-> setPageStep ( QMAX( 1, 256 / m_cres )); |
127 | contrast-> setValue ( contr ); | 127 | contrast-> setValue ( contr ); |
128 | } | 128 | } |
129 | 129 | ||
130 | // light sensor | 130 | // light sensor |
131 | auto_brightness-> setChecked ( config. readBoolEntry ( "LightSensor", false )); | 131 | auto_brightness-> setChecked ( config. readBoolEntry ( "LightSensor", false )); |
132 | m_sensordata = config. readListEntry ( "LightSensorData", ';' ); | 132 | m_sensordata = config. readListEntry ( "LightSensorData", ';' ); |
133 | 133 | ||
134 | config. setGroup ( "AC" ); | 134 | config. setGroup ( "AC" ); |
135 | 135 | ||
136 | // ac spinboxes | 136 | // ac spinboxes |
137 | interval_dim_ac-> setValue ( config. readNumEntry ( "Dim", 60 )); | 137 | interval_dim_ac-> setValue ( config. readNumEntry ( "Dim", 60 )); |
138 | interval_lightoff_ac-> setValue ( config. readNumEntry ( "LightOff", 120 )); | 138 | interval_lightoff_ac-> setValue ( config. readNumEntry ( "LightOff", 120 )); |
139 | interval_suspend_ac-> setValue ( config. readNumEntry ( "Suspend", 0 )); | 139 | interval_suspend_ac-> setValue ( config. readNumEntry ( "Suspend", 0 )); |
140 | 140 | ||
141 | // ac check and slider | 141 | // ac check and slider |
142 | LcdOffOnly_ac-> setChecked ( config. readBoolEntry ( "LcdOffOnly", false )); | 142 | LcdOffOnly_ac-> setChecked ( config. readBoolEntry ( "LcdOffOnly", false )); |
143 | 143 | ||
144 | // CPU frequency | 144 | // CPU frequency |
145 | frequency_ac->setCurrentItem( config.readNumEntry("Freq", 0) ); | 145 | frequency_ac->setCurrentItem( config.readNumEntry("Freq", 0) ); |
146 | 146 | ||
147 | // hinge action | 147 | // hinge action |
148 | closeHingeAction_ac->setCurrentItem( config.readNumEntry("CloseHingeAction", 0) ); | 148 | closeHingeAction_ac->setCurrentItem( config.readNumEntry("CloseHingeAction", 0) ); |
149 | 149 | ||
150 | bright = config. readNumEntry ( "Brightness", 255 ); | 150 | bright = config. readNumEntry ( "Brightness", 255 ); |
151 | brightness_ac-> setTickInterval ( QMAX( 16, 256 / m_bres )); | 151 | brightness_ac-> setTickInterval ( QMAX( 16, 256 / m_bres )); |
152 | brightness_ac-> setLineStep ( QMAX( 1, 256 / m_bres )); | 152 | brightness_ac-> setLineStep ( QMAX( 1, 256 / m_bres )); |
153 | brightness_ac-> setPageStep ( QMAX( 1, 256 / m_bres )); | 153 | brightness_ac-> setPageStep ( QMAX( 1, 256 / m_bres )); |
154 | brightness_ac-> setValue ( bright ); | 154 | brightness_ac-> setValue ( bright ); |
155 | 155 | ||
156 | if (m_cres) { | 156 | if (m_cres) { |
157 | contr = config. readNumEntry ( "Contrast", 127); | 157 | contr = config. readNumEntry ( "Contrast", 127); |
158 | contrast_ac-> setTickInterval ( QMAX( 16, 256 / m_cres )); | 158 | contrast_ac-> setTickInterval ( QMAX( 16, 256 / m_cres )); |
159 | contrast_ac-> setLineStep ( QMAX( 1, 256 / m_cres )); | 159 | contrast_ac-> setLineStep ( QMAX( 1, 256 / m_cres )); |
160 | contrast_ac-> setPageStep ( QMAX( 1, 256 / m_cres )); | 160 | contrast_ac-> setPageStep ( QMAX( 1, 256 / m_cres )); |
161 | contrast_ac-> setValue ( contr ); | 161 | contrast_ac-> setValue ( contr ); |
162 | } | 162 | } |
163 | 163 | ||
164 | // light sensor | 164 | // light sensor |
165 | auto_brightness_ac-> setChecked ( config. readBoolEntry ( "LightSensor", false )); | 165 | auto_brightness_ac-> setChecked ( config. readBoolEntry ( "LightSensor", false )); |
166 | m_sensordata_ac = config. readListEntry ( "LightSensorData", ';' ); | 166 | m_sensordata_ac = config. readListEntry ( "LightSensorData", ';' ); |
167 | 167 | ||
168 | // warnings | 168 | // warnings |
169 | config. setGroup ( "Warnings" ); | 169 | config. setGroup ( "Warnings" ); |
170 | warnintervalBox-> setValue ( config. readNumEntry ( "checkinterval", 10000 ) / 1000 ); | 170 | warnintervalBox-> setValue ( config. readNumEntry ( "checkinterval", 10000 ) / 1000 ); |
171 | lowSpinBox-> setValue ( config. readNumEntry ( "powerverylow", 10 ) ); | 171 | lowSpinBox-> setValue ( config. readNumEntry ( "powerverylow", 10 ) ); |
172 | criticalSpinBox-> setValue ( config. readNumEntry ( "powercritical", 5 ) ); | 172 | criticalSpinBox-> setValue ( config. readNumEntry ( "powercritical", 5 ) ); |
173 | 173 | ||
174 | m_resettimer = new QTimer ( this ); | 174 | m_resettimer = new QTimer ( this ); |
175 | connect ( m_resettimer, SIGNAL( timeout ( )), this, SLOT( resetBacklight ( ))); | 175 | connect ( m_resettimer, SIGNAL( timeout()), this, SLOT( resetBacklight())); |
176 | 176 | ||
177 | if ( PowerStatusManager::readStatus ( ). acStatus ( ) != PowerStatus::Online ) { | 177 | if ( PowerStatusManager::readStatus ( ). acStatus ( ) != PowerStatus::Online ) { |
178 | tabs-> setCurrentPage ( 0 ); | 178 | tabs-> setCurrentPage ( 0 ); |
179 | } | 179 | } |
180 | else { | 180 | else { |
181 | tabs-> setCurrentPage ( 1 ); | 181 | tabs-> setCurrentPage ( 1 ); |
182 | } | 182 | } |
183 | 183 | ||
184 | connect ( brightness, SIGNAL( valueChanged ( int )), this, SLOT( setBacklight ( int ))); | 184 | connect ( brightness, SIGNAL( valueChanged(int)), this, SLOT( setBacklight(int))); |
185 | connect ( brightness_ac, SIGNAL( valueChanged ( int )), this, SLOT( setBacklight ( int ))); | 185 | connect ( brightness_ac, SIGNAL( valueChanged(int)), this, SLOT( setBacklight(int))); |
186 | if (m_cres) { | 186 | if (m_cres) { |
187 | connect ( contrast, SIGNAL( valueChanged ( int )), this, SLOT( setContrast ( int ))); | 187 | connect ( contrast, SIGNAL( valueChanged(int)), this, SLOT( setContrast(int))); |
188 | connect ( contrast_ac, SIGNAL( valueChanged ( int )), this, SLOT( setContrast ( int ))); | 188 | connect ( contrast_ac, SIGNAL( valueChanged(int)), this, SLOT( setContrast(int))); |
189 | } | 189 | } |
190 | connect( frequency, SIGNAL( activated(int) ), this, SLOT( setFrequency(int) ) ); | 190 | connect( frequency, SIGNAL( activated(int) ), this, SLOT( setFrequency(int) ) ); |
191 | connect( frequency_ac, SIGNAL( activated(int) ), this, SLOT( setFrequency(int) ) ); | 191 | connect( frequency_ac, SIGNAL( activated(int) ), this, SLOT( setFrequency(int) ) ); |
192 | connect( closeHingeAction, SIGNAL( activated(int) ), this, SLOT( setCloseHingeAction(int) ) ); | 192 | connect( closeHingeAction, SIGNAL( activated(int) ), this, SLOT( setCloseHingeAction(int) ) ); |
193 | connect( closeHingeAction_ac, SIGNAL( activated(int) ), this, SLOT( setCloseHingeAction(int) ) ); | 193 | connect( closeHingeAction_ac, SIGNAL( activated(int) ), this, SLOT( setCloseHingeAction(int) ) ); |
194 | } | 194 | } |
195 | 195 | ||
196 | LightSettings::~LightSettings ( ) | 196 | LightSettings::~LightSettings ( ) |
197 | { | 197 | { |
198 | } | 198 | } |
199 | 199 | ||
200 | void LightSettings::calibrateSensor ( ) | 200 | void LightSettings::calibrateSensor ( ) |
201 | { | 201 | { |
202 | Sensor *s = new Sensor ( m_sensordata, this ); | 202 | Sensor *s = new Sensor ( m_sensordata, this ); |
203 | connect ( s, SIGNAL( viewBacklight ( int )), this, SLOT( setBacklight ( int ))); | 203 | connect ( s, SIGNAL( viewBacklight(int)), this, SLOT( setBacklight(int))); |
204 | QPEApplication::execDialog( s ); | 204 | QPEApplication::execDialog( s ); |
205 | delete s; | 205 | delete s; |
206 | } | 206 | } |
207 | 207 | ||
208 | void LightSettings::calibrateSensorAC ( ) | 208 | void LightSettings::calibrateSensorAC ( ) |
209 | { | 209 | { |
210 | Sensor *s = new Sensor ( m_sensordata_ac, this ); | 210 | Sensor *s = new Sensor ( m_sensordata_ac, this ); |
211 | connect ( s, SIGNAL( viewBacklight ( int )), this, SLOT( setBacklight ( int ))); | 211 | connect ( s, SIGNAL( viewBacklight(int)), this, SLOT( setBacklight(int))); |
212 | QPEApplication::execDialog ( s ); | 212 | QPEApplication::execDialog ( s ); |
213 | delete s; | 213 | delete s; |
214 | } | 214 | } |
215 | 215 | ||
216 | void LightSettings::setBacklight ( int bright ) | 216 | void LightSettings::setBacklight ( int bright ) |
217 | { | 217 | { |
218 | QCopEnvelope e ( "QPE/System", "setBacklight(int)" ); | 218 | QCopEnvelope e ( "QPE/System", "setBacklight(int)" ); |
219 | e << bright; | 219 | e << bright; |
220 | 220 | ||
221 | if ( bright != -1 ) { | 221 | if ( bright != -1 ) { |
222 | m_resettimer-> stop ( ); | 222 | m_resettimer-> stop ( ); |
223 | m_resettimer-> start ( 4000, true ); | 223 | m_resettimer-> start ( 4000, true ); |
224 | } | 224 | } |
225 | } | 225 | } |
226 | 226 | ||
227 | void LightSettings::setContrast ( int contr ) | 227 | void LightSettings::setContrast ( int contr ) |
228 | { | 228 | { |
229 | if (contr == -1) contr = m_oldcontrast; | 229 | if (contr == -1) contr = m_oldcontrast; |
230 | ODevice::inst ( )-> setDisplayContrast(contr); | 230 | ODevice::inst ( )-> setDisplayContrast(contr); |
231 | } | 231 | } |
232 | 232 | ||
233 | void LightSettings::setFrequency ( int index ) | 233 | void LightSettings::setFrequency ( int index ) |
234 | { | 234 | { |
235 | qWarning("LightSettings::setFrequency(%d)", index); | 235 | qWarning("LightSettings::setFrequency(%d)", index); |
236 | ODevice::inst ( )-> setCurrentCpuFrequency(index); | 236 | ODevice::inst ( )-> setCurrentCpuFrequency(index); |
237 | } | 237 | } |
238 | 238 | ||
239 | void LightSettings::resetBacklight ( ) | 239 | void LightSettings::resetBacklight ( ) |
240 | { | 240 | { |
241 | setBacklight ( -1 ); | 241 | setBacklight ( -1 ); |
242 | setContrast ( -1 ); | 242 | setContrast ( -1 ); |
243 | } | 243 | } |
244 | 244 | ||
245 | void LightSettings::setCloseHingeAction ( int index ) | 245 | void LightSettings::setCloseHingeAction ( int index ) |
246 | { | 246 | { |
247 | qWarning("LightSettings::setCloseHingeStatus(%d)", index); | 247 | qWarning("LightSettings::setCloseHingeStatus(%d)", index); |
248 | } | 248 | } |
249 | 249 | ||
250 | void LightSettings::accept ( ) | 250 | void LightSettings::accept ( ) |
251 | { | 251 | { |
252 | Config config ( "apm" ); | 252 | Config config ( "apm" ); |
253 | 253 | ||
254 | // bat | 254 | // bat |
255 | config. setGroup ( "Battery" ); | 255 | config. setGroup ( "Battery" ); |
256 | config. writeEntry ( "LcdOffOnly", LcdOffOnly-> isChecked ( )); | 256 | config. writeEntry ( "LcdOffOnly", LcdOffOnly-> isChecked ( )); |
257 | config. writeEntry ( "Dim", interval_dim-> value ( )); | 257 | config. writeEntry ( "Dim", interval_dim-> value ( )); |
258 | config. writeEntry ( "LightOff", interval_lightoff-> value ( )); | 258 | config. writeEntry ( "LightOff", interval_lightoff-> value ( )); |
259 | config. writeEntry ( "Suspend", interval_suspend-> value ( )); | 259 | config. writeEntry ( "Suspend", interval_suspend-> value ( )); |
260 | config. writeEntry ( "Brightness", brightness-> value () ); | 260 | config. writeEntry ( "Brightness", brightness-> value () ); |
261 | if (m_cres) | 261 | if (m_cres) |
262 | config. writeEntry ( "Contrast", contrast-> value () ); | 262 | config. writeEntry ( "Contrast", contrast-> value () ); |
263 | config. writeEntry ( "Freq", frequency->currentItem() ); | 263 | config. writeEntry ( "Freq", frequency->currentItem() ); |
264 | config. writeEntry ( "CloseHingeAction", closeHingeAction->currentItem() ); | 264 | config. writeEntry ( "CloseHingeAction", closeHingeAction->currentItem() ); |
265 | 265 | ||
266 | // ac | 266 | // ac |
267 | config. setGroup ( "AC" ); | 267 | config. setGroup ( "AC" ); |
268 | config. writeEntry ( "LcdOffOnly", LcdOffOnly_ac-> isChecked ( )); | 268 | config. writeEntry ( "LcdOffOnly", LcdOffOnly_ac-> isChecked ( )); |
269 | config. writeEntry ( "Dim", interval_dim_ac-> value ( )); | 269 | config. writeEntry ( "Dim", interval_dim_ac-> value ( )); |
270 | config. writeEntry ( "LightOff", interval_lightoff_ac-> value ( )); | 270 | config. writeEntry ( "LightOff", interval_lightoff_ac-> value ( )); |
271 | config. writeEntry ( "Suspend", interval_suspend_ac-> value ( )); | 271 | config. writeEntry ( "Suspend", interval_suspend_ac-> value ( )); |
272 | config. writeEntry ( "Brightness", brightness_ac-> value () ); | 272 | config. writeEntry ( "Brightness", brightness_ac-> value () ); |
273 | if (m_cres) | 273 | if (m_cres) |
274 | config. writeEntry ( "Contrast", contrast_ac-> value () ); | 274 | config. writeEntry ( "Contrast", contrast_ac-> value () ); |
275 | config. writeEntry ( "Freq", frequency_ac->currentItem() ); | 275 | config. writeEntry ( "Freq", frequency_ac->currentItem() ); |
276 | config. writeEntry ( "CloseHingeAction", closeHingeAction_ac->currentItem() ); | 276 | config. writeEntry ( "CloseHingeAction", closeHingeAction_ac->currentItem() ); |
277 | 277 | ||
278 | // only make light sensor stuff appear if the unit has a sensor | 278 | // only make light sensor stuff appear if the unit has a sensor |
279 | if ( ODevice::inst ( )-> hasLightSensor ( )) { | 279 | if ( ODevice::inst ( )-> hasLightSensor ( )) { |
280 | config. setGroup ( "Battery" ); | 280 | config. setGroup ( "Battery" ); |
281 | config. writeEntry ( "LightSensor", auto_brightness->isChecked() ); | 281 | config. writeEntry ( "LightSensor", auto_brightness->isChecked() ); |
282 | config. writeEntry ( "LightSensorData", m_sensordata, ';' ); | 282 | config. writeEntry ( "LightSensorData", m_sensordata, ';' ); |
283 | config. setGroup ( "AC" ); | 283 | config. setGroup ( "AC" ); |
284 | config. writeEntry ( "LightSensor", auto_brightness_ac->isChecked() ); | 284 | config. writeEntry ( "LightSensor", auto_brightness_ac->isChecked() ); |
285 | config. writeEntry ( "LightSensorData", m_sensordata_ac, ';' ); | 285 | config. writeEntry ( "LightSensorData", m_sensordata_ac, ';' ); |
286 | } | 286 | } |
287 | 287 | ||
288 | // advanced | 288 | // advanced |
289 | config. setGroup ( "Warnings" ); | 289 | config. setGroup ( "Warnings" ); |
290 | config. writeEntry ( "check_interval", warnintervalBox-> value ( ) * 1000 ); | 290 | config. writeEntry ( "check_interval", warnintervalBox-> value ( ) * 1000 ); |
291 | config. writeEntry ( "power_verylow", lowSpinBox-> value ( )); | 291 | config. writeEntry ( "power_verylow", lowSpinBox-> value ( )); |
292 | config. writeEntry ( "power_critical", criticalSpinBox-> value ( )); | 292 | config. writeEntry ( "power_critical", criticalSpinBox-> value ( )); |
293 | config. write ( ); | 293 | config. write ( ); |
294 | 294 | ||
295 | // notify the launcher | 295 | // notify the launcher |
296 | { | 296 | { |
297 | QCopEnvelope e ( "QPE/System", "reloadPowerWarnSettings()" ); | 297 | QCopEnvelope e ( "QPE/System", "reloadPowerWarnSettings()" ); |
298 | } | 298 | } |
299 | { | 299 | { |
300 | QCopEnvelope e ( "QPE/System", "setScreenSaverInterval(int)" ); | 300 | QCopEnvelope e ( "QPE/System", "setScreenSaverInterval(int)" ); |
301 | e << -1; | 301 | e << -1; |
302 | } | 302 | } |
303 | LightSettingsBase::accept ( ); | 303 | LightSettingsBase::accept ( ); |
304 | } | 304 | } |
305 | 305 | ||
306 | void LightSettings::done ( int r ) | 306 | void LightSettings::done ( int r ) |
307 | { | 307 | { |
diff --git a/core/settings/light-and-power/sensor.cpp b/core/settings/light-and-power/sensor.cpp index 41de851..013e655 100644 --- a/core/settings/light-and-power/sensor.cpp +++ b/core/settings/light-and-power/sensor.cpp | |||
@@ -1,102 +1,102 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the OPIE Project | 2 | This file is part of the OPIE Project |
3 | =. Copyright (c) 2002 Maximilian Reiss <harlekin@handhelds.org> | 3 | =. Copyright (c) 2002 Maximilian Reiss <harlekin@handhelds.org> |
4 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> | 4 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> |
5 | .>+-= | 5 | .>+-= |
6 | _;:, .> :=|. This file is free software; you can | 6 | _;:, .> :=|. This file is free software; you can |
7 | .> <`_, > . <= redistribute it and/or modify it under | 7 | .> <`_, > . <= redistribute it and/or modify it under |
8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
9 | .="- .-=="i, .._ License as published by the Free Software | 9 | .="- .-=="i, .._ License as published by the Free Software |
10 | - . .-<_> .<> Foundation; either version 2 of the License, | 10 | - . .-<_> .<> Foundation; either version 2 of the License, |
11 | ._= =} : or (at your option) any later version. | 11 | ._= =} : or (at your option) any later version. |
12 | .%`+i> _;_. | 12 | .%`+i> _;_. |
13 | .i_,=:_. -<s. This file is distributed in the hope that | 13 | .i_,=:_. -<s. This file is distributed in the hope that |
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
15 | : .. .:, . . . without even the implied warranty of | 15 | : .. .:, . . . without even the implied warranty of |
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | 17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General |
18 | ..}^=.= = ; Public License for more details. | 18 | ..}^=.= = ; Public License for more details. |
19 | ++= -. .` .: | 19 | ++= -. .` .: |
20 | : = ...= . :.=- You should have received a copy of the GNU | 20 | : = ...= . :.=- You should have received a copy of the GNU |
21 | -. .:....=;==+<; General Public License along with this file; | 21 | -. .:....=;==+<; General Public License along with this file; |
22 | -_. . . )=. = see the file COPYING. If not, write to the | 22 | -_. . . )=. = see the file COPYING. If not, write to the |
23 | -- :-=` Free Software Foundation, Inc., | 23 | -- :-=` Free Software Foundation, Inc., |
24 | 59 Temple Place - Suite 330, | 24 | 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | #include <qlayout.h> | 28 | #include <qlayout.h> |
29 | #include <qslider.h> | 29 | #include <qslider.h> |
30 | #include <qspinbox.h> | 30 | #include <qspinbox.h> |
31 | 31 | ||
32 | #include <opie/odevice.h> | 32 | #include <opie/odevice.h> |
33 | 33 | ||
34 | using namespace Opie; | 34 | using namespace Opie; |
35 | 35 | ||
36 | #include "calibration.h" | 36 | #include "calibration.h" |
37 | #include "sensor.h" | 37 | #include "sensor.h" |
38 | 38 | ||
39 | Sensor::Sensor ( QStringList ¶ms, QWidget *parent, const char *name ) | 39 | Sensor::Sensor ( QStringList ¶ms, QWidget *parent, const char *name ) |
40 | : SensorBase ( parent, name, true, WStyle_ContextHelp ), m_params ( params ) | 40 | : SensorBase ( parent, name, true, WStyle_ContextHelp ), m_params ( params ) |
41 | { | 41 | { |
42 | int steps = 12; | 42 | int steps = 12; |
43 | int inter = 2; | 43 | int inter = 2; |
44 | 44 | ||
45 | int smin = 40; | 45 | int smin = 40; |
46 | int smax = 215; | 46 | int smax = 215; |
47 | int lmin = 1; | 47 | int lmin = 1; |
48 | int lmax = 255; | 48 | int lmax = 255; |
49 | 49 | ||
50 | switch ( params. count ( )) { | 50 | switch ( params. count ( )) { |
51 | case 6: lmax = params [5]. toInt ( ); | 51 | case 6: lmax = params [5]. toInt ( ); |
52 | case 5: lmin = params [4]. toInt ( ); | 52 | case 5: lmin = params [4]. toInt ( ); |
53 | case 4: smax = params [3]. toInt ( ); | 53 | case 4: smax = params [3]. toInt ( ); |
54 | case 3: smin = params [2]. toInt ( ); | 54 | case 3: smin = params [2]. toInt ( ); |
55 | case 2: steps = params [1]. toInt ( ); | 55 | case 2: steps = params [1]. toInt ( ); |
56 | case 1: inter = params [0]. toInt ( ) / 1000; | 56 | case 1: inter = params [0]. toInt ( ) / 1000; |
57 | } | 57 | } |
58 | 58 | ||
59 | int xscale = ODevice::inst ( )-> lightSensorResolution ( ); | 59 | int xscale = ODevice::inst ( )-> lightSensorResolution ( ); |
60 | int yscale = ODevice::inst ( )-> displayBrightnessResolution ( ); | 60 | int yscale = ODevice::inst ( )-> displayBrightnessResolution ( ); |
61 | 61 | ||
62 | QVBoxLayout *lay = new QVBoxLayout ( frame ); | 62 | QVBoxLayout *lay = new QVBoxLayout ( frame ); |
63 | lay-> setMargin ( 2 ); | 63 | lay-> setMargin ( 2 ); |
64 | m_calib = new Calibration ( frame ); | 64 | m_calib = new Calibration ( frame ); |
65 | lay-> add ( m_calib ); | 65 | lay-> add ( m_calib ); |
66 | 66 | ||
67 | m_calib-> setScale ( QSize ( xscale, yscale )); | 67 | m_calib-> setScale ( QSize ( xscale, yscale )); |
68 | m_calib-> setLineSteps ( steps ); | 68 | m_calib-> setLineSteps ( steps ); |
69 | m_calib-> setInterval ( inter ); | 69 | m_calib-> setInterval ( inter ); |
70 | m_calib-> setStartPoint ( QPoint ( smin * xscale / 256, lmax * yscale / 256 )); | 70 | m_calib-> setStartPoint ( QPoint ( smin * xscale / 256, lmax * yscale / 256 )); |
71 | m_calib-> setEndPoint ( QPoint ( smax * xscale / 256, lmin * yscale / 256 )); | 71 | m_calib-> setEndPoint ( QPoint ( smax * xscale / 256, lmin * yscale / 256 )); |
72 | 72 | ||
73 | interval-> setValue ( inter ); | 73 | interval-> setValue ( inter ); |
74 | linesteps-> setValue ( steps ); | 74 | linesteps-> setValue ( steps ); |
75 | 75 | ||
76 | connect ( interval, SIGNAL( valueChanged ( int )), m_calib, SLOT( setInterval ( int ))); | 76 | connect ( interval, SIGNAL( valueChanged(int)), m_calib, SLOT( setInterval(int))); |
77 | connect ( linesteps, SIGNAL( valueChanged ( int )), m_calib, SLOT( setLineSteps ( int ))); | 77 | connect ( linesteps, SIGNAL( valueChanged(int)), m_calib, SLOT( setLineSteps(int))); |
78 | 78 | ||
79 | connect ( m_calib, SIGNAL( startPointChanged ( const QPoint & )), this, SLOT( pointDrag ( const QPoint & ))); | 79 | connect ( m_calib, SIGNAL( startPointChanged(const QPoint&)), this, SLOT( pointDrag(const QPoint&))); |
80 | connect ( m_calib, SIGNAL( endPointChanged ( const QPoint & )), this, SLOT( pointDrag ( const QPoint & ))); | 80 | connect ( m_calib, SIGNAL( endPointChanged(const QPoint&)), this, SLOT( pointDrag(const QPoint&))); |
81 | } | 81 | } |
82 | 82 | ||
83 | void Sensor::accept ( ) | 83 | void Sensor::accept ( ) |
84 | { | 84 | { |
85 | int xscale = ODevice::inst ( )-> lightSensorResolution ( ); | 85 | int xscale = ODevice::inst ( )-> lightSensorResolution ( ); |
86 | int yscale = ODevice::inst ( )-> displayBrightnessResolution ( ); | 86 | int yscale = ODevice::inst ( )-> displayBrightnessResolution ( ); |
87 | 87 | ||
88 | m_params. clear ( ); | 88 | m_params. clear ( ); |
89 | m_params << QString::number ( m_calib-> interval ( ) * 1000 ) | 89 | m_params << QString::number ( m_calib-> interval ( ) * 1000 ) |
90 | << QString::number ( m_calib-> lineSteps ( )) | 90 | << QString::number ( m_calib-> lineSteps ( )) |
91 | << QString::number ( m_calib-> startPoint ( ). x ( ) * 256 / xscale ) | 91 | << QString::number ( m_calib-> startPoint ( ). x ( ) * 256 / xscale ) |
92 | << QString::number ( m_calib-> endPoint ( ). x ( ) * 256 / xscale ) | 92 | << QString::number ( m_calib-> endPoint ( ). x ( ) * 256 / xscale ) |
93 | << QString::number ( m_calib-> endPoint ( ). y ( ) * 256 / yscale ) | 93 | << QString::number ( m_calib-> endPoint ( ). y ( ) * 256 / yscale ) |
94 | << QString::number ( m_calib-> startPoint ( ). y ( ) * 256 / yscale ); | 94 | << QString::number ( m_calib-> startPoint ( ). y ( ) * 256 / yscale ); |
95 | 95 | ||
96 | QDialog::accept ( ); | 96 | QDialog::accept ( ); |
97 | } | 97 | } |
98 | 98 | ||
99 | void Sensor::pointDrag ( const QPoint &p ) | 99 | void Sensor::pointDrag ( const QPoint &p ) |
100 | { | 100 | { |
101 | emit viewBacklight ( p. y ( )); | 101 | emit viewBacklight ( p. y ( )); |
102 | } | 102 | } |
diff --git a/core/tools/quicklauncher/main.cpp b/core/tools/quicklauncher/main.cpp index cc411fd..1d6774c 100644 --- a/core/tools/quicklauncher/main.cpp +++ b/core/tools/quicklauncher/main.cpp | |||
@@ -1,186 +1,186 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2003 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2003 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include <qpainter.h> | 21 | #include <qpainter.h> |
22 | #include <qstrlist.h> | 22 | #include <qstrlist.h> |
23 | #include <qtimer.h> | 23 | #include <qtimer.h> |
24 | #include <qguardedptr.h> | 24 | #include <qguardedptr.h> |
25 | #include <qcopchannel_qws.h> | 25 | #include <qcopchannel_qws.h> |
26 | #define QTOPIA_INTERNAL_INITAPP | 26 | #define QTOPIA_INTERNAL_INITAPP |
27 | 27 | ||
28 | #ifdef private | 28 | #ifdef private |
29 | # undef private | 29 | # undef private |
30 | #endif | 30 | #endif |
31 | #define private public | 31 | #define private public |
32 | #include <qtopia/qpeapplication.h> | 32 | #include <qtopia/qpeapplication.h> |
33 | #undef private | 33 | #undef private |
34 | #include <stdio.h> | 34 | #include <stdio.h> |
35 | #include <stdlib.h> | 35 | #include <stdlib.h> |
36 | #include <sys/types.h> | 36 | #include <sys/types.h> |
37 | #include <sys/stat.h> | 37 | #include <sys/stat.h> |
38 | #include <unistd.h> | 38 | #include <unistd.h> |
39 | 39 | ||
40 | #include "dropins.h" | 40 | #include "dropins.h" |
41 | 41 | ||
42 | static QPEApplication *app = 0; | 42 | static QPEApplication *app = 0; |
43 | static PluginLoader *loader = 0; | 43 | static PluginLoader *loader = 0; |
44 | static ApplicationInterface *appIface = 0; | 44 | static ApplicationInterface *appIface = 0; |
45 | static QGuardedPtr<QWidget> mainWindow; | 45 | static QGuardedPtr<QWidget> mainWindow; |
46 | 46 | ||
47 | #ifdef _OS_LINUX_ | 47 | #ifdef _OS_LINUX_ |
48 | static char **argv0 = 0; | 48 | static char **argv0 = 0; |
49 | static int argv_lth; | 49 | static int argv_lth; |
50 | extern char **environ; | 50 | extern char **environ; |
51 | #ifndef SPT_BUFSIZE | 51 | #ifndef SPT_BUFSIZE |
52 | #define SPT_BUFSIZE 2048 | 52 | #define SPT_BUFSIZE 2048 |
53 | #endif | 53 | #endif |
54 | #include <stdarg.h> | 54 | #include <stdarg.h> |
55 | void setproctitle (const char *fmt,...) { | 55 | void setproctitle (const char *fmt,...) { |
56 | int i; | 56 | int i; |
57 | char buf[SPT_BUFSIZE]; | 57 | char buf[SPT_BUFSIZE]; |
58 | va_list ap; | 58 | va_list ap; |
59 | 59 | ||
60 | if (!argv0) | 60 | if (!argv0) |
61 | return; | 61 | return; |
62 | 62 | ||
63 | va_start(ap, fmt); | 63 | va_start(ap, fmt); |
64 | (void) vsnprintf(buf, SPT_BUFSIZE, fmt, ap); | 64 | (void) vsnprintf(buf, SPT_BUFSIZE, fmt, ap); |
65 | va_end(ap); | 65 | va_end(ap); |
66 | 66 | ||
67 | i = strlen (buf); | 67 | i = strlen (buf); |
68 | if (i > argv_lth - 2) { | 68 | if (i > argv_lth - 2) { |
69 | i = argv_lth - 2; | 69 | i = argv_lth - 2; |
70 | buf[i] = '\0'; | 70 | buf[i] = '\0'; |
71 | } | 71 | } |
72 | memset(argv0[0], '\0', argv_lth); /* clear the memory area */ | 72 | memset(argv0[0], '\0', argv_lth); /* clear the memory area */ |
73 | (void) strcpy (argv0[0], buf); | 73 | (void) strcpy (argv0[0], buf); |
74 | 74 | ||
75 | argv0[1] = NULL; | 75 | argv0[1] = NULL; |
76 | } | 76 | } |
77 | #endif | 77 | #endif |
78 | 78 | ||
79 | 79 | ||
80 | class QuickLauncher : public QObject | 80 | class QuickLauncher : public QObject |
81 | { | 81 | { |
82 | Q_OBJECT | 82 | Q_OBJECT |
83 | public: | 83 | public: |
84 | QuickLauncher() : QObject() | 84 | QuickLauncher() : QObject() |
85 | { | 85 | { |
86 | QCString ch("QPE/QuickLauncher-"); | 86 | QCString ch("QPE/QuickLauncher-"); |
87 | ch += QString::number(getpid()); | 87 | ch += QString::number(getpid()); |
88 | qlChannel = new QCopChannel( ch, this); | 88 | qlChannel = new QCopChannel( ch, this); |
89 | connect( qlChannel, SIGNAL(received(const QCString&, const QByteArray&)), | 89 | connect( qlChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
90 | this, SLOT(message(const QCString&, const QByteArray&)) ); | 90 | this, SLOT(message(const QCString&,const QByteArray&)) ); |
91 | } | 91 | } |
92 | 92 | ||
93 | static void exec( int /*argc*/, char **argv ) | 93 | static void exec( int /*argc*/, char **argv ) |
94 | { | 94 | { |
95 | QString appName = argv[0]; | 95 | QString appName = argv[0]; |
96 | int sep = appName.findRev( '/' ); | 96 | int sep = appName.findRev( '/' ); |
97 | if ( sep > 0 ) | 97 | if ( sep > 0 ) |
98 | appName = appName.mid( sep+1 ); | 98 | appName = appName.mid( sep+1 ); |
99 | 99 | ||
100 | appIface = 0; | 100 | appIface = 0; |
101 | if ( loader->queryInterface(appName, IID_QtopiaApplication, (QUnknownInterface**)&appIface) == QS_OK ) { | 101 | if ( loader->queryInterface(appName, IID_QtopiaApplication, (QUnknownInterface**)&appIface) == QS_OK ) { |
102 | mainWindow = appIface->createMainWindow( appName ); | 102 | mainWindow = appIface->createMainWindow( appName ); |
103 | } | 103 | } |
104 | if ( mainWindow ) { | 104 | if ( mainWindow ) { |
105 | if ( mainWindow->metaObject()->slotNames().contains("setDocument(const QString&)") ) { | 105 | if ( mainWindow->metaObject()->slotNames().contains("setDocument(const QString&)") ) { |
106 | app->showMainDocumentWidget( mainWindow ); | 106 | app->showMainDocumentWidget( mainWindow ); |
107 | } else { | 107 | } else { |
108 | app->showMainWidget( mainWindow ); | 108 | app->showMainWidget( mainWindow ); |
109 | } | 109 | } |
110 | } else { | 110 | } else { |
111 | qWarning( "Could not create application main window" ); | 111 | qWarning( "Could not create application main window" ); |
112 | exit(-1); | 112 | exit(-1); |
113 | } | 113 | } |
114 | } | 114 | } |
115 | 115 | ||
116 | private slots: | 116 | private slots: |
117 | void message(const QCString &msg, const QByteArray & data) | 117 | void message(const QCString &msg, const QByteArray & data) |
118 | { | 118 | { |
119 | QStrList argList; | 119 | QStrList argList; |
120 | 120 | ||
121 | if ( msg == "execute(QStrList)" ) { | 121 | if ( msg == "execute(QStrList)" ) { |
122 | delete qlChannel; | 122 | delete qlChannel; |
123 | QDataStream stream( data, IO_ReadOnly ); | 123 | QDataStream stream( data, IO_ReadOnly ); |
124 | QStrList argList; | 124 | QStrList argList; |
125 | stream >> argList; | 125 | stream >> argList; |
126 | qDebug( "QuickLauncher execute: %s", argList.at(0) ); | 126 | qDebug( "QuickLauncher execute: %s", argList.at(0) ); |
127 | doQuickLaunch( argList ); | 127 | doQuickLaunch( argList ); |
128 | delete this; | 128 | delete this; |
129 | } else if ( msg == "execute(QString)" ) { | 129 | } else if ( msg == "execute(QString)" ) { |
130 | delete qlChannel; | 130 | delete qlChannel; |
131 | QDataStream stream( data, IO_ReadOnly ); | 131 | QDataStream stream( data, IO_ReadOnly ); |
132 | QString arg; | 132 | QString arg; |
133 | stream >> arg; | 133 | stream >> arg; |
134 | qDebug( "QuickLauncher execute: %s", arg.latin1() ); | 134 | qDebug( "QuickLauncher execute: %s", arg.latin1() ); |
135 | QStrList argList; | 135 | QStrList argList; |
136 | argList.append( arg.utf8() ); | 136 | argList.append( arg.utf8() ); |
137 | doQuickLaunch( argList ); | 137 | doQuickLaunch( argList ); |
138 | delete this; | 138 | delete this; |
139 | } | 139 | } |
140 | } | 140 | } |
141 | 141 | ||
142 | private: | 142 | private: |
143 | void doQuickLaunch( QStrList &argList ) | 143 | void doQuickLaunch( QStrList &argList ) |
144 | { | 144 | { |
145 | static int myargc = argList.count(); | 145 | static int myargc = argList.count(); |
146 | static char **myargv = new char *[myargc + 1]; | 146 | static char **myargv = new char *[myargc + 1]; |
147 | for ( int j = 0; j < myargc; j++ ) { | 147 | for ( int j = 0; j < myargc; j++ ) { |
148 | myargv[j] = new char [strlen(argList.at(j))+1]; | 148 | myargv[j] = new char [strlen(argList.at(j))+1]; |
149 | strcpy( myargv[j], argList.at(j) ); | 149 | strcpy( myargv[j], argList.at(j) ); |
150 | } | 150 | } |
151 | myargv[myargc] = NULL; | 151 | myargv[myargc] = NULL; |
152 | #ifdef _OS_LINUX_ | 152 | #ifdef _OS_LINUX_ |
153 | // Change name of process | 153 | // Change name of process |
154 | setproctitle(myargv[0]); | 154 | setproctitle(myargv[0]); |
155 | #endif | 155 | #endif |
156 | 156 | ||
157 | connect(app, SIGNAL(lastWindowClosed()), app, SLOT(hideOrQuit())); | 157 | connect(app, SIGNAL(lastWindowClosed()), app, SLOT(hideOrQuit())); |
158 | app->exit_loop(); | 158 | app->exit_loop(); |
159 | app->initApp( myargc, myargv ); | 159 | app->initApp( myargc, myargv ); |
160 | exec( myargc, myargv ); | 160 | exec( myargc, myargv ); |
161 | } | 161 | } |
162 | 162 | ||
163 | private: | 163 | private: |
164 | QCopChannel *qlChannel; | 164 | QCopChannel *qlChannel; |
165 | }; | 165 | }; |
166 | 166 | ||
167 | int main( int argc, char** argv ) | 167 | int main( int argc, char** argv ) |
168 | { | 168 | { |
169 | app = new QPEApplication( argc, argv ); | 169 | app = new QPEApplication( argc, argv ); |
170 | 170 | ||
171 | loader = new PluginLoader( "application" ); | 171 | loader = new PluginLoader( "application" ); |
172 | 172 | ||
173 | unsetenv( "LD_BIND_NOW" ); | 173 | unsetenv( "LD_BIND_NOW" ); |
174 | 174 | ||
175 | QCString arg0 = argv[0]; | 175 | QCString arg0 = argv[0]; |
176 | int sep = arg0.findRev( '/' ); | 176 | int sep = arg0.findRev( '/' ); |
177 | if ( sep > 0 ) | 177 | if ( sep > 0 ) |
178 | arg0 = arg0.mid( sep+1 ); | 178 | arg0 = arg0.mid( sep+1 ); |
179 | if ( arg0 != "quicklauncher" ) { | 179 | if ( arg0 != "quicklauncher" ) { |
180 | qDebug( "QuickLauncher invoked as: %s", arg0.data() ); | 180 | qDebug( "QuickLauncher invoked as: %s", arg0.data() ); |
181 | QuickLauncher::exec( argc, argv ); | 181 | QuickLauncher::exec( argc, argv ); |
182 | } else { | 182 | } else { |
183 | #ifdef _OS_LINUX_ | 183 | #ifdef _OS_LINUX_ |
184 | // Setup to change proc title | 184 | // Setup to change proc title |
185 | int i; | 185 | int i; |
186 | char **envp = environ; | 186 | char **envp = environ; |
diff --git a/development/keyview/keyview.cpp b/development/keyview/keyview.cpp index 21bbb93..93c84d9 100644 --- a/development/keyview/keyview.cpp +++ b/development/keyview/keyview.cpp | |||
@@ -1,69 +1,69 @@ | |||
1 | #include "keyview.h" | 1 | #include "keyview.h" |
2 | #include <qgrid.h> | 2 | #include <qgrid.h> |
3 | //#include <iostream.h> | 3 | //#include <iostream.h> |
4 | #include <qlineedit.h> | 4 | #include <qlineedit.h> |
5 | #include <qlabel.h> | 5 | #include <qlabel.h> |
6 | 6 | ||
7 | Keyview::Keyview( QWidget* parent, const char* name, WFlags fl ) | 7 | Keyview::Keyview( QWidget* parent, const char* name, WFlags fl ) |
8 | : QGrid ( 2, parent, name, fl ) | 8 | : QGrid ( 2, parent, name, fl ) |
9 | { | 9 | { |
10 | setCaption( tr("Keyview") ); | 10 | setCaption( tr("Keyview") ); |
11 | setSpacing(3); | 11 | setSpacing(3); |
12 | setMargin(4); | 12 | setMargin(4); |
13 | 13 | ||
14 | QLabel *l; | 14 | QLabel *l; |
15 | 15 | ||
16 | l = new QLabel(QString("unicode:"), this); | 16 | l = new QLabel(QString("unicode:"), this); |
17 | unicode = new QLineEdit(this); | 17 | unicode = new QLineEdit(this); |
18 | unicode->setReadOnly(1); | 18 | unicode->setReadOnly(1); |
19 | 19 | ||
20 | l = new QLabel(QString("keycode:"), this); | 20 | l = new QLabel(QString("keycode:"), this); |
21 | keycode = new QLineEdit(this); | 21 | keycode = new QLineEdit(this); |
22 | keycode->setReadOnly(1); | 22 | keycode->setReadOnly(1); |
23 | 23 | ||
24 | l = new QLabel(QString("modifiers:"), this); | 24 | l = new QLabel(QString("modifiers:"), this); |
25 | modifiers = new QLineEdit(this); | 25 | modifiers = new QLineEdit(this); |
26 | modifiers->setReadOnly(1); | 26 | modifiers->setReadOnly(1); |
27 | 27 | ||
28 | l = new QLabel(QString("isPress:"), this); | 28 | l = new QLabel(QString("isPress:"), this); |
29 | isPress = new QLineEdit(this); | 29 | isPress = new QLineEdit(this); |
30 | isPress->setReadOnly(1); | 30 | isPress->setReadOnly(1); |
31 | 31 | ||
32 | l = new QLabel(QString("autoRepeat:"), this); | 32 | l = new QLabel(QString("autoRepeat:"), this); |
33 | autoRepeat = new QLineEdit(this); | 33 | autoRepeat = new QLineEdit(this); |
34 | autoRepeat->setReadOnly(1); | 34 | autoRepeat->setReadOnly(1); |
35 | 35 | ||
36 | // spacer | 36 | // spacer |
37 | l = new QLabel(QString(""), this); | 37 | l = new QLabel(QString(""), this); |
38 | l->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); | 38 | l->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); |
39 | 39 | ||
40 | 40 | ||
41 | KeyFilter *filter = new KeyFilter(this); | 41 | KeyFilter *filter = new KeyFilter(this); |
42 | QWSServer::setKeyboardFilter(filter); | 42 | QWSServer::setKeyboardFilter(filter); |
43 | 43 | ||
44 | connect(filter, SIGNAL(keyPressed(int, int, int, bool, bool)), | 44 | connect(filter, SIGNAL(keyPressed(int,int,int,bool,bool)), |
45 | this, SLOT(updateItems(int, int, int, bool, bool))); | 45 | this, SLOT(updateItems(int,int,int,bool,bool))); |
46 | } | 46 | } |
47 | 47 | ||
48 | Keyview::~Keyview() { } | 48 | Keyview::~Keyview() { } |
49 | 49 | ||
50 | void Keyview::updateItems(int u, int k, int m, bool p, bool a) { | 50 | void Keyview::updateItems(int u, int k, int m, bool p, bool a) { |
51 | 51 | ||
52 | unicode->setText("0x" + QString::number(u, 16)); | 52 | unicode->setText("0x" + QString::number(u, 16)); |
53 | keycode->setText("0x" + QString::number(k, 16)); | 53 | keycode->setText("0x" + QString::number(k, 16)); |
54 | modifiers->setText("0x" + QString::number(m, 16)); | 54 | modifiers->setText("0x" + QString::number(m, 16)); |
55 | isPress->setText("0x" + QString::number(p, 16)); | 55 | isPress->setText("0x" + QString::number(p, 16)); |
56 | autoRepeat->setText("0x" + QString::number(a, 16)); | 56 | autoRepeat->setText("0x" + QString::number(a, 16)); |
57 | } | 57 | } |
58 | 58 | ||
59 | KeyFilter::KeyFilter(QObject * parent, const char *name) : QObject( parent, name ) { | 59 | KeyFilter::KeyFilter(QObject * parent, const char *name) : QObject( parent, name ) { |
60 | 60 | ||
61 | } | 61 | } |
62 | 62 | ||
63 | bool KeyFilter::filter(int unicode, int keycode, int modifiers, bool isPress, | 63 | bool KeyFilter::filter(int unicode, int keycode, int modifiers, bool isPress, |
64 | bool autoRepeat) { | 64 | bool autoRepeat) { |
65 | 65 | ||
66 | emit keyPressed(unicode, keycode, modifiers, isPress, autoRepeat); | 66 | emit keyPressed(unicode, keycode, modifiers, isPress, autoRepeat); |
67 | return 0; // return 1 to stop key emiting | 67 | return 0; // return 1 to stop key emiting |
68 | 68 | ||
69 | } | 69 | } |
diff --git a/examples/main-tab/simple.cpp b/examples/main-tab/simple.cpp index 69dd00f..c5a6d5a 100644 --- a/examples/main-tab/simple.cpp +++ b/examples/main-tab/simple.cpp | |||
@@ -1,139 +1,139 @@ | |||
1 | #include <qaction.h> // action | 1 | #include <qaction.h> // action |
2 | #include <qmenubar.h> // menubar | 2 | #include <qmenubar.h> // menubar |
3 | #include <qtoolbar.h> // toolbar | 3 | #include <qtoolbar.h> // toolbar |
4 | #include <qlabel.h> // a label | 4 | #include <qlabel.h> // a label |
5 | #include <qpushbutton.h> // the header file for the QPushButton | 5 | #include <qpushbutton.h> // the header file for the QPushButton |
6 | #include <qlayout.h> | 6 | #include <qlayout.h> |
7 | 7 | ||
8 | #include <qpe/qpeapplication.h> // the QPEApplication | 8 | #include <qpe/qpeapplication.h> // the QPEApplication |
9 | #include <qpe/resource.h> | 9 | #include <qpe/resource.h> |
10 | #include <qpe/sound.h> | 10 | #include <qpe/sound.h> |
11 | 11 | ||
12 | #include <opie/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching | 12 | #include <opie/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching |
13 | #include <opie/otabwidget.h> | 13 | #include <opie/otabwidget.h> |
14 | 14 | ||
15 | #include "simple.h" | 15 | #include "simple.h" |
16 | 16 | ||
17 | /* | 17 | /* |
18 | * implementation of simple | 18 | * implementation of simple |
19 | */ | 19 | */ |
20 | 20 | ||
21 | /* | 21 | /* |
22 | * The factory is used for quicklaunching | 22 | * The factory is used for quicklaunching |
23 | * It needs a constructor ( c'tor ) with at least QWidget, const char* and WFlags as parameter and a static QString appName() matching the TARGET of the .pro | 23 | * It needs a constructor ( c'tor ) with at least QWidget, const char* and WFlags as parameter and a static QString appName() matching the TARGET of the .pro |
24 | * | 24 | * |
25 | * Depending on the global quick launch setting this will create | 25 | * Depending on the global quick launch setting this will create |
26 | * either a main method or one for our component plugin system | 26 | * either a main method or one for our component plugin system |
27 | */ | 27 | */ |
28 | 28 | ||
29 | OPIE_EXPORT_APP( OApplicationFactory<MainWindow> ) | 29 | OPIE_EXPORT_APP( OApplicationFactory<MainWindow> ) |
30 | 30 | ||
31 | MainWindow::MainWindow(QWidget *parent, const char* name, WFlags fl ) | 31 | MainWindow::MainWindow(QWidget *parent, const char* name, WFlags fl ) |
32 | : QMainWindow( parent, name, fl ) { | 32 | : QMainWindow( parent, name, fl ) { |
33 | setCaption(tr("My MainWindow") ); | 33 | setCaption(tr("My MainWindow") ); |
34 | 34 | ||
35 | initUI(); | 35 | initUI(); |
36 | 36 | ||
37 | 37 | ||
38 | /* | 38 | /* |
39 | * Tab widget as central | 39 | * Tab widget as central |
40 | */ | 40 | */ |
41 | OTabWidget *tab = new OTabWidget(this); | 41 | OTabWidget *tab = new OTabWidget(this); |
42 | connect(tab, SIGNAL(currentChanged(QWidget*) ), | 42 | connect(tab, SIGNAL(currentChanged(QWidget*) ), |
43 | this, SLOT( slotCurrentChanged( QWidget* ) ) ); | 43 | this, SLOT( slotCurrentChanged(QWidget*) ) ); |
44 | setCentralWidget( tab ); | 44 | setCentralWidget( tab ); |
45 | 45 | ||
46 | Simple1 *simple1 = new Simple1( this ); | 46 | Simple1 *simple1 = new Simple1( this ); |
47 | tab->addTab( simple1, "new", tr("Simple1") ); | 47 | tab->addTab( simple1, "new", tr("Simple1") ); |
48 | tab->setCurrentTab( tr("Simple1") ); | 48 | tab->setCurrentTab( tr("Simple1") ); |
49 | 49 | ||
50 | Simple2 *simple2 = new Simple2( this ); | 50 | Simple2 *simple2 = new Simple2( this ); |
51 | tab->addTab( simple2, "trash", tr("Simple2") ); | 51 | tab->addTab( simple2, "trash", tr("Simple2") ); |
52 | 52 | ||
53 | m_oldCurrent = simple1; | 53 | m_oldCurrent = simple1; |
54 | 54 | ||
55 | connect(m_fire, SIGNAL(activated() ), | 55 | connect(m_fire, SIGNAL(activated() ), |
56 | simple1, SLOT(slotFire() ) ); | 56 | simple1, SLOT(slotFire() ) ); |
57 | } | 57 | } |
58 | 58 | ||
59 | MainWindow::~MainWindow() { | 59 | MainWindow::~MainWindow() { |
60 | // again nothing to delete because Qt takes care | 60 | // again nothing to delete because Qt takes care |
61 | } | 61 | } |
62 | 62 | ||
63 | 63 | ||
64 | void MainWindow::setDocument( const QString& /*str*/ ) { | 64 | void MainWindow::setDocument( const QString& /*str*/ ) { |
65 | } | 65 | } |
66 | void MainWindow::slotCurrentChanged( QWidget *wid) { | 66 | void MainWindow::slotCurrentChanged( QWidget *wid) { |
67 | disconnect(m_fire, SIGNAL(activated() ), | 67 | disconnect(m_fire, SIGNAL(activated() ), |
68 | m_oldCurrent, SLOT(slotFire() ) ); | 68 | m_oldCurrent, SLOT(slotFire() ) ); |
69 | connect(m_fire, SIGNAL(activated() ), | 69 | connect(m_fire, SIGNAL(activated() ), |
70 | wid, SLOT(slotFire() ) ); | 70 | wid, SLOT(slotFire() ) ); |
71 | 71 | ||
72 | m_oldCurrent = wid; | 72 | m_oldCurrent = wid; |
73 | } | 73 | } |
74 | 74 | ||
75 | void MainWindow::initUI() { | 75 | void MainWindow::initUI() { |
76 | 76 | ||
77 | setToolBarsMovable( false ); | 77 | setToolBarsMovable( false ); |
78 | 78 | ||
79 | QToolBar *menuBarHolder = new QToolBar( this ); | 79 | QToolBar *menuBarHolder = new QToolBar( this ); |
80 | 80 | ||
81 | menuBarHolder->setHorizontalStretchable( true ); | 81 | menuBarHolder->setHorizontalStretchable( true ); |
82 | QMenuBar *mb = new QMenuBar( menuBarHolder ); | 82 | QMenuBar *mb = new QMenuBar( menuBarHolder ); |
83 | QToolBar *tb = new QToolBar( this ); | 83 | QToolBar *tb = new QToolBar( this ); |
84 | 84 | ||
85 | QPopupMenu *fileMenu = new QPopupMenu( this ); | 85 | QPopupMenu *fileMenu = new QPopupMenu( this ); |
86 | 86 | ||
87 | 87 | ||
88 | QAction *a = new QAction( tr("Quit"), Resource::loadIconSet("quit_icon"), | 88 | QAction *a = new QAction( tr("Quit"), Resource::loadIconSet("quit_icon"), |
89 | QString::null, 0, this, "quit_action" ); | 89 | QString::null, 0, this, "quit_action" ); |
90 | /* | 90 | /* |
91 | * Connect quit to the QApplication quit slot | 91 | * Connect quit to the QApplication quit slot |
92 | */ | 92 | */ |
93 | connect(a, SIGNAL(activated() ), | 93 | connect(a, SIGNAL(activated() ), |
94 | qApp, SLOT(quit() ) ); | 94 | qApp, SLOT(quit() ) ); |
95 | a->addTo( fileMenu ); | 95 | a->addTo( fileMenu ); |
96 | 96 | ||
97 | a = new QAction(tr("Fire"), | 97 | a = new QAction(tr("Fire"), |
98 | Resource::loadIconSet("new"), | 98 | Resource::loadIconSet("new"), |
99 | QString::null, 0, this, "fire_button"); | 99 | QString::null, 0, this, "fire_button"); |
100 | 100 | ||
101 | /* see the power? */ | 101 | /* see the power? */ |
102 | a->addTo( fileMenu ); | 102 | a->addTo( fileMenu ); |
103 | a->addTo( tb ); | 103 | a->addTo( tb ); |
104 | m_fire = a; | 104 | m_fire = a; |
105 | 105 | ||
106 | 106 | ||
107 | mb->insertItem(tr("File"), fileMenu ); | 107 | mb->insertItem(tr("File"), fileMenu ); |
108 | 108 | ||
109 | } | 109 | } |
110 | 110 | ||
111 | Simple1::Simple1( QWidget* parent, const char* name, WFlags fl ) | 111 | Simple1::Simple1( QWidget* parent, const char* name, WFlags fl ) |
112 | : QWidget( parent, name, fl ) { | 112 | : QWidget( parent, name, fl ) { |
113 | 113 | ||
114 | QVBoxLayout *layout = new QVBoxLayout( this ); | 114 | QVBoxLayout *layout = new QVBoxLayout( this ); |
115 | layout->setSpacing( 8 ); | 115 | layout->setSpacing( 8 ); |
116 | layout->setMargin( 11 ); | 116 | layout->setMargin( 11 ); |
117 | 117 | ||
118 | 118 | ||
119 | QLabel *lbl = new QLabel( this, "a name for the label" ); | 119 | QLabel *lbl = new QLabel( this, "a name for the label" ); |
120 | lbl->setText( tr("Click on the button or follow the white rabbit") ); | 120 | lbl->setText( tr("Click on the button or follow the white rabbit") ); |
121 | layout->addWidget( lbl ); | 121 | layout->addWidget( lbl ); |
122 | 122 | ||
123 | 123 | ||
124 | m_button = new QPushButton(this); | 124 | m_button = new QPushButton(this); |
125 | 125 | ||
126 | 126 | ||
127 | m_button->setText( tr("Fire", "translatable quit string" ) ); | 127 | m_button->setText( tr("Fire", "translatable quit string" ) ); |
128 | layout->addWidget( m_button ); | 128 | layout->addWidget( m_button ); |
129 | 129 | ||
130 | 130 | ||
131 | connect( m_button, SIGNAL(clicked() ), | 131 | connect( m_button, SIGNAL(clicked() ), |
132 | this, SLOT( slotFire() ) ); | 132 | this, SLOT( slotFire() ) ); |
133 | } | 133 | } |
134 | 134 | ||
135 | Simple1::~Simple1() { | 135 | Simple1::~Simple1() { |
136 | 136 | ||
137 | } | 137 | } |
138 | 138 | ||
139 | void Simple1::slotFire() { | 139 | void Simple1::slotFire() { |
diff --git a/examples/simple-pim/simple.cpp b/examples/simple-pim/simple.cpp index 3e9fcd3..029e71b 100644 --- a/examples/simple-pim/simple.cpp +++ b/examples/simple-pim/simple.cpp | |||
@@ -1,407 +1,407 @@ | |||
1 | #include <qaction.h> // action | 1 | #include <qaction.h> // action |
2 | #include <qmenubar.h> // menubar | 2 | #include <qmenubar.h> // menubar |
3 | #include <qtoolbar.h> // toolbar | 3 | #include <qtoolbar.h> // toolbar |
4 | #include <qlabel.h> // a label | 4 | #include <qlabel.h> // a label |
5 | #include <qpushbutton.h> // the header file for the QPushButton | 5 | #include <qpushbutton.h> // the header file for the QPushButton |
6 | #include <qlayout.h> | 6 | #include <qlayout.h> |
7 | #include <qtimer.h> // we use it for the singleShot | 7 | #include <qtimer.h> // we use it for the singleShot |
8 | #include <qdatetime.h> // for QDate | 8 | #include <qdatetime.h> // for QDate |
9 | #include <qtextview.h> // a rich text widget | 9 | #include <qtextview.h> // a rich text widget |
10 | #include <qdialog.h> | 10 | #include <qdialog.h> |
11 | #include <qwhatsthis.h> // for whats this | 11 | #include <qwhatsthis.h> // for whats this |
12 | 12 | ||
13 | #include <qpe/qpeapplication.h> // the QPEApplication | 13 | #include <qpe/qpeapplication.h> // the QPEApplication |
14 | #include <qpe/resource.h> | 14 | #include <qpe/resource.h> |
15 | #include <qpe/sound.h> | 15 | #include <qpe/sound.h> |
16 | #include <qpe/qcopenvelope_qws.h> | 16 | #include <qpe/qcopenvelope_qws.h> |
17 | #include <qpe/datebookmonth.h> | 17 | #include <qpe/datebookmonth.h> |
18 | #include <qpe/timestring.h> | 18 | #include <qpe/timestring.h> |
19 | 19 | ||
20 | #include <opie/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching | 20 | #include <opie/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching |
21 | #include <opie/otabwidget.h> | 21 | #include <opie/otabwidget.h> |
22 | #include <opie/owait.h> | 22 | #include <opie/owait.h> |
23 | 23 | ||
24 | #include "simple.h" | 24 | #include "simple.h" |
25 | 25 | ||
26 | /* | 26 | /* |
27 | * implementation of simple | 27 | * implementation of simple |
28 | */ | 28 | */ |
29 | 29 | ||
30 | /* | 30 | /* |
31 | * The factory is used for quicklaunching | 31 | * The factory is used for quicklaunching |
32 | * It needs a constructor ( c'tor ) with at least QWidget, const char* and WFlags as parameter and a static QString appName() matching the TARGET of the .pro | 32 | * It needs a constructor ( c'tor ) with at least QWidget, const char* and WFlags as parameter and a static QString appName() matching the TARGET of the .pro |
33 | * | 33 | * |
34 | * Depending on the global quick launch setting this will create | 34 | * Depending on the global quick launch setting this will create |
35 | * either a main method or one for our component plugin system | 35 | * either a main method or one for our component plugin system |
36 | */ | 36 | */ |
37 | 37 | ||
38 | OPIE_EXPORT_APP( OApplicationFactory<MainWindow> ) | 38 | OPIE_EXPORT_APP( OApplicationFactory<MainWindow> ) |
39 | 39 | ||
40 | MainWindow::MainWindow(QWidget *parent, const char* name, WFlags fl ) | 40 | MainWindow::MainWindow(QWidget *parent, const char* name, WFlags fl ) |
41 | : QMainWindow( parent, name, fl ) { | 41 | : QMainWindow( parent, name, fl ) { |
42 | setCaption(tr("My MainWindow") ); | 42 | setCaption(tr("My MainWindow") ); |
43 | 43 | ||
44 | m_desktopChannel = 0; | 44 | m_desktopChannel = 0; |
45 | m_loading = 0; | 45 | m_loading = 0; |
46 | 46 | ||
47 | initUI(); | 47 | initUI(); |
48 | 48 | ||
49 | 49 | ||
50 | /* | 50 | /* |
51 | * Tab widget as central | 51 | * Tab widget as central |
52 | */ | 52 | */ |
53 | m_tab = new OTabWidget(this); | 53 | m_tab = new OTabWidget(this); |
54 | 54 | ||
55 | setCentralWidget( m_tab ); | 55 | setCentralWidget( m_tab ); |
56 | 56 | ||
57 | m_todoView = new PIMListView(m_tab, "Todo view" ); | 57 | m_todoView = new PIMListView(m_tab, "Todo view" ); |
58 | m_tab->addTab( m_todoView,"todo/TodoList", tr("Todos") ); | 58 | m_tab->addTab( m_todoView,"todo/TodoList", tr("Todos") ); |
59 | 59 | ||
60 | m_dateView = new PIMListView(m_tab, "Datebook view" ); | 60 | m_dateView = new PIMListView(m_tab, "Datebook view" ); |
61 | m_tab->addTab( m_dateView, "datebook/DateBook", tr("Events") ); | 61 | m_tab->addTab( m_dateView, "datebook/DateBook", tr("Events") ); |
62 | 62 | ||
63 | /* now connect the actions */ | 63 | /* now connect the actions */ |
64 | /* | 64 | /* |
65 | * we connect the activated to our show | 65 | * we connect the activated to our show |
66 | * and on activation we will show a detailed | 66 | * and on activation we will show a detailed |
67 | * summary of the record | 67 | * summary of the record |
68 | */ | 68 | */ |
69 | connect(m_fire, SIGNAL(activated() ), | 69 | connect(m_fire, SIGNAL(activated() ), |
70 | this, SLOT(slotShow() ) ); | 70 | this, SLOT(slotShow() ) ); |
71 | 71 | ||
72 | /* | 72 | /* |
73 | * We will change the date | 73 | * We will change the date |
74 | */ | 74 | */ |
75 | connect(m_dateAction, SIGNAL(activated() ), | 75 | connect(m_dateAction, SIGNAL(activated() ), |
76 | this, SLOT(slotDate() ) ); | 76 | this, SLOT(slotDate() ) ); |
77 | 77 | ||
78 | /* | 78 | /* |
79 | * connect the show signal of the PIMListView | 79 | * connect the show signal of the PIMListView |
80 | * to a slot to show a dialog | 80 | * to a slot to show a dialog |
81 | */ | 81 | */ |
82 | connect(m_todoView, SIGNAL(showRecord(const OPimRecord& ) ), | 82 | connect(m_todoView, SIGNAL(showRecord(const OPimRecord&) ), |
83 | this, SLOT(slotShowRecord(const OPimRecord& ) ) ); | 83 | this, SLOT(slotShowRecord(const OPimRecord&) ) ); |
84 | connect(m_dateView, SIGNAL(showRecord(const OPimRecord& ) ), | 84 | connect(m_dateView, SIGNAL(showRecord(const OPimRecord&) ), |
85 | this, SLOT(slotShowRecord(const OPimRecord& ) ) ); | 85 | this, SLOT(slotShowRecord(const OPimRecord&) ) ); |
86 | 86 | ||
87 | /* | 87 | /* |
88 | * Now comes the important lines of code for this example | 88 | * Now comes the important lines of code for this example |
89 | * We do not directly call load but delay loading until | 89 | * We do not directly call load but delay loading until |
90 | * all Events are dispatches and handled. | 90 | * all Events are dispatches and handled. |
91 | * SO we will load once our window is mapped to screen | 91 | * SO we will load once our window is mapped to screen |
92 | * to achieve that we use a QTimer::singleShot | 92 | * to achieve that we use a QTimer::singleShot |
93 | * After 10 milli seconds the timer fires and on TimerEvent | 93 | * After 10 milli seconds the timer fires and on TimerEvent |
94 | * out slot slotLoad will be called | 94 | * out slot slotLoad will be called |
95 | * Remember this a Constructor to construct your object and not | 95 | * Remember this a Constructor to construct your object and not |
96 | * to load | 96 | * to load |
97 | */ | 97 | */ |
98 | QTimer::singleShot( 10, this, SLOT(slotLoad() ) ); | 98 | QTimer::singleShot( 10, this, SLOT(slotLoad() ) ); |
99 | } | 99 | } |
100 | 100 | ||
101 | MainWindow::~MainWindow() { | 101 | MainWindow::~MainWindow() { |
102 | // again nothing to delete because Qt takes care | 102 | // again nothing to delete because Qt takes care |
103 | } | 103 | } |
104 | 104 | ||
105 | 105 | ||
106 | void MainWindow::setDocument( const QString& /*str*/ ) { | 106 | void MainWindow::setDocument( const QString& /*str*/ ) { |
107 | } | 107 | } |
108 | 108 | ||
109 | 109 | ||
110 | void MainWindow::initUI() { | 110 | void MainWindow::initUI() { |
111 | 111 | ||
112 | setToolBarsMovable( false ); | 112 | setToolBarsMovable( false ); |
113 | 113 | ||
114 | QToolBar *menuBarHolder = new QToolBar( this ); | 114 | QToolBar *menuBarHolder = new QToolBar( this ); |
115 | 115 | ||
116 | menuBarHolder->setHorizontalStretchable( true ); | 116 | menuBarHolder->setHorizontalStretchable( true ); |
117 | QMenuBar *mb = new QMenuBar( menuBarHolder ); | 117 | QMenuBar *mb = new QMenuBar( menuBarHolder ); |
118 | QToolBar *tb = new QToolBar( this ); | 118 | QToolBar *tb = new QToolBar( this ); |
119 | 119 | ||
120 | QPopupMenu *fileMenu = new QPopupMenu( this ); | 120 | QPopupMenu *fileMenu = new QPopupMenu( this ); |
121 | 121 | ||
122 | 122 | ||
123 | QAction *a = new QAction( tr("Quit"), Resource::loadIconSet("quit_icon"), | 123 | QAction *a = new QAction( tr("Quit"), Resource::loadIconSet("quit_icon"), |
124 | QString::null, 0, this, "quit_action" ); | 124 | QString::null, 0, this, "quit_action" ); |
125 | /* | 125 | /* |
126 | * Connect quit to the QApplication quit slot | 126 | * Connect quit to the QApplication quit slot |
127 | */ | 127 | */ |
128 | connect(a, SIGNAL(activated() ), | 128 | connect(a, SIGNAL(activated() ), |
129 | qApp, SLOT(quit() ) ); | 129 | qApp, SLOT(quit() ) ); |
130 | a->addTo( fileMenu ); | 130 | a->addTo( fileMenu ); |
131 | 131 | ||
132 | a = new QAction(tr("View Current"), | 132 | a = new QAction(tr("View Current"), |
133 | Resource::loadIconSet("zoom"), | 133 | Resource::loadIconSet("zoom"), |
134 | QString::null, 0, this, "view current"); | 134 | QString::null, 0, this, "view current"); |
135 | /* a simple whats this online explanation of out button */ | 135 | /* a simple whats this online explanation of out button */ |
136 | a->setWhatsThis(tr("Views the current record") ); | 136 | a->setWhatsThis(tr("Views the current record") ); |
137 | /* or QWhatsThis::add(widget, "description" ); */ | 137 | /* or QWhatsThis::add(widget, "description" ); */ |
138 | 138 | ||
139 | /* see the power? */ | 139 | /* see the power? */ |
140 | a->addTo( fileMenu ); | 140 | a->addTo( fileMenu ); |
141 | a->addTo( tb ); | 141 | a->addTo( tb ); |
142 | m_fire = a; | 142 | m_fire = a; |
143 | 143 | ||
144 | a = new QAction(tr("Choose Date"), | 144 | a = new QAction(tr("Choose Date"), |
145 | Resource::loadIconSet("day"), | 145 | Resource::loadIconSet("day"), |
146 | QString::null, 0, this, "choose date" ); | 146 | QString::null, 0, this, "choose date" ); |
147 | a->addTo( fileMenu ); | 147 | a->addTo( fileMenu ); |
148 | a->addTo( tb ); | 148 | a->addTo( tb ); |
149 | m_dateAction = a; | 149 | m_dateAction = a; |
150 | 150 | ||
151 | mb->insertItem(tr("File"), fileMenu ); | 151 | mb->insertItem(tr("File"), fileMenu ); |
152 | 152 | ||
153 | } | 153 | } |
154 | 154 | ||
155 | void MainWindow::slotLoad() { | 155 | void MainWindow::slotLoad() { |
156 | /* | 156 | /* |
157 | * There is no real shared access in the PIM API | 157 | * There is no real shared access in the PIM API |
158 | * It wasn't finish cause of health problems of one | 158 | * It wasn't finish cause of health problems of one |
159 | * of the authors so we do something fancy and use QCOP | 159 | * of the authors so we do something fancy and use QCOP |
160 | * the IPC system to get a current copy | 160 | * the IPC system to get a current copy |
161 | */ | 161 | */ |
162 | /* NOTES to QCOP: QCOP operates over channels and use QDataStream | 162 | /* NOTES to QCOP: QCOP operates over channels and use QDataStream |
163 | * to send data. You can check if a channel isRegistered or hook | 163 | * to send data. You can check if a channel isRegistered or hook |
164 | * yourself to that channel. A Channel is QCString and normally | 164 | * yourself to that channel. A Channel is QCString and normally |
165 | * prefix with QPE/ and then the system in example QPE/System, | 165 | * prefix with QPE/ and then the system in example QPE/System, |
166 | * QPE/Desktop a special channel is the application channel | 166 | * QPE/Desktop a special channel is the application channel |
167 | * it QPE/Application/appname this channel gets created on app | 167 | * it QPE/Application/appname this channel gets created on app |
168 | * startup by QPEApplication. QCOP is asynchronous | 168 | * startup by QPEApplication. QCOP is asynchronous |
169 | * | 169 | * |
170 | * To send you'll use QCopEnevelope | 170 | * To send you'll use QCopEnevelope |
171 | * | 171 | * |
172 | */ | 172 | */ |
173 | /* | 173 | /* |
174 | * What we will do is first is get to know if either | 174 | * What we will do is first is get to know if either |
175 | * datebook or todolist are running if so we will kindly | 175 | * datebook or todolist are running if so we will kindly |
176 | * asked to save the data for us. | 176 | * asked to save the data for us. |
177 | * If neither are running we can load directly | 177 | * If neither are running we can load directly |
178 | */ | 178 | */ |
179 | if (!QCopChannel::isRegistered("QPE/Application/todolist") && | 179 | if (!QCopChannel::isRegistered("QPE/Application/todolist") && |
180 | !QCopChannel::isRegistered("QPE/Application/datebook") ) { | 180 | !QCopChannel::isRegistered("QPE/Application/datebook") ) { |
181 | m_db.load(); | 181 | m_db.load(); |
182 | m_tb.load(); | 182 | m_tb.load(); |
183 | return slotLoadForDay( QDate::currentDate() ); | 183 | return slotLoadForDay( QDate::currentDate() ); |
184 | } | 184 | } |
185 | 185 | ||
186 | /* | 186 | /* |
187 | * prepare our answer machine the QCopChannel | 187 | * prepare our answer machine the QCopChannel |
188 | * QPE/Desktop will send "flushDone(QString)" when | 188 | * QPE/Desktop will send "flushDone(QString)" when |
189 | * the flush is done it emits a signal on receive | 189 | * the flush is done it emits a signal on receive |
190 | */ | 190 | */ |
191 | m_desktopChannel = new QCopChannel("QPE/Desktop"); | 191 | m_desktopChannel = new QCopChannel("QPE/Desktop"); |
192 | connect(m_desktopChannel, SIGNAL(received(const QCString&, const QByteArray& ) ), | 192 | connect(m_desktopChannel, SIGNAL(received(const QCString&,const QByteArray&) ), |
193 | this, SLOT(slotDesktopReceive(const QCString&, const QByteArray& ) ) ); | 193 | this, SLOT(slotDesktopReceive(const QCString&,const QByteArray&) ) ); |
194 | /* the numberof synced channels will be set to zero */ | 194 | /* the numberof synced channels will be set to zero */ |
195 | m_synced = 0; | 195 | m_synced = 0; |
196 | 196 | ||
197 | /* | 197 | /* |
198 | * We use {} around the QCopEnvelope because it sends its | 198 | * We use {} around the QCopEnvelope because it sends its |
199 | * data on destruction of QCopEnvelope with | 199 | * data on destruction of QCopEnvelope with |
200 | */ | 200 | */ |
201 | /* check again if not present increment synced*/ | 201 | /* check again if not present increment synced*/ |
202 | if ( QCopChannel::isRegistered("QPE/Application/todolist") ) { | 202 | if ( QCopChannel::isRegistered("QPE/Application/todolist") ) { |
203 | QCopEnvelope env("QPE/Application/todolist", "flush()" ); | 203 | QCopEnvelope env("QPE/Application/todolist", "flush()" ); |
204 | // env << data; but we do not have any parameters here | 204 | // env << data; but we do not have any parameters here |
205 | }else | 205 | }else |
206 | m_synced++; | 206 | m_synced++; |
207 | 207 | ||
208 | if ( QCopChannel::isRegistered("QPE/Application/datebook") ) { | 208 | if ( QCopChannel::isRegistered("QPE/Application/datebook") ) { |
209 | QCopEnvelope env("QPE/Application/datebook", "flush()" ); | 209 | QCopEnvelope env("QPE/Application/datebook", "flush()" ); |
210 | }else | 210 | }else |
211 | m_synced++; | 211 | m_synced++; |
212 | 212 | ||
213 | /* we will provide a wait scrren */ | 213 | /* we will provide a wait scrren */ |
214 | m_loading = new OWait(this, "wait screen" ); | 214 | m_loading = new OWait(this, "wait screen" ); |
215 | } | 215 | } |
216 | 216 | ||
217 | void MainWindow::slotDesktopReceive(const QCString& cmd, const QByteArray& data ) { | 217 | void MainWindow::slotDesktopReceive(const QCString& cmd, const QByteArray& data ) { |
218 | /* the bytearray was filled with the QDataStream now | 218 | /* the bytearray was filled with the QDataStream now |
219 | * we open it read only to get the value(s) | 219 | * we open it read only to get the value(s) |
220 | */ | 220 | */ |
221 | QDataStream stream(data, IO_ReadOnly ); | 221 | QDataStream stream(data, IO_ReadOnly ); |
222 | /* | 222 | /* |
223 | * we're only interested in the flushDone | 223 | * we're only interested in the flushDone |
224 | */ | 224 | */ |
225 | if ( cmd == "flushDone(QString)" ) { | 225 | if ( cmd == "flushDone(QString)" ) { |
226 | QString appname; | 226 | QString appname; |
227 | stream >> appname; // get the first argument out of stream | 227 | stream >> appname; // get the first argument out of stream |
228 | if (appname == QString::fromLatin1("datebook") || | 228 | if (appname == QString::fromLatin1("datebook") || |
229 | appname == QString::fromLatin1("todolist") ) | 229 | appname == QString::fromLatin1("todolist") ) |
230 | m_synced++; | 230 | m_synced++; |
231 | } | 231 | } |
232 | 232 | ||
233 | /* | 233 | /* |
234 | * If we synced both we can go ahead | 234 | * If we synced both we can go ahead |
235 | * In future this is not needed anymore when we finally | 235 | * In future this is not needed anymore when we finally |
236 | * implemented X-Ref and other PIM features | 236 | * implemented X-Ref and other PIM features |
237 | */ | 237 | */ |
238 | if (m_synced >= 2 ) { | 238 | if (m_synced >= 2 ) { |
239 | delete m_loading; | 239 | delete m_loading; |
240 | delete m_desktopChannel; | 240 | delete m_desktopChannel; |
241 | /* now we finally can start doing the actual loading */ | 241 | /* now we finally can start doing the actual loading */ |
242 | m_tb.load(); | 242 | m_tb.load(); |
243 | m_db.load(); | 243 | m_db.load(); |
244 | { | 244 | { |
245 | /* tell the applications to reload */ | 245 | /* tell the applications to reload */ |
246 | QCopEnvelope("QPE/Application/todolist", "reload()"); | 246 | QCopEnvelope("QPE/Application/todolist", "reload()"); |
247 | QCopEnvelope("QPE/Application/datebook", "reload()"); | 247 | QCopEnvelope("QPE/Application/datebook", "reload()"); |
248 | } | 248 | } |
249 | slotLoadForDay( QDate::currentDate() ); | 249 | slotLoadForDay( QDate::currentDate() ); |
250 | } | 250 | } |
251 | 251 | ||
252 | } | 252 | } |
253 | 253 | ||
254 | /* overloaded member for shortcoming of libqpe */ | 254 | /* overloaded member for shortcoming of libqpe */ |
255 | void MainWindow::slotLoadForDay(int y, int m, int d) { | 255 | void MainWindow::slotLoadForDay(int y, int m, int d) { |
256 | /* year,month, day */ | 256 | /* year,month, day */ |
257 | slotLoadForDay( QDate(y, m, d ) ); | 257 | slotLoadForDay( QDate(y, m, d ) ); |
258 | } | 258 | } |
259 | 259 | ||
260 | void MainWindow::slotLoadForDay(const QDate& date) { | 260 | void MainWindow::slotLoadForDay(const QDate& date) { |
261 | 261 | ||
262 | 262 | ||
263 | /* all todos for today including the ones without dueDate */ | 263 | /* all todos for today including the ones without dueDate */ |
264 | m_todoView->set( m_tb.effectiveToDos(date, date ) ); | 264 | m_todoView->set( m_tb.effectiveToDos(date, date ) ); |
265 | m_dateView->set( m_db.effectiveEvents( date, date ) ); | 265 | m_dateView->set( m_db.effectiveEvents( date, date ) ); |
266 | } | 266 | } |
267 | 267 | ||
268 | /* we want to show the current record */ | 268 | /* we want to show the current record */ |
269 | void MainWindow::slotShow() { | 269 | void MainWindow::slotShow() { |
270 | /* we only added PIMListViews so we can safely cast */ | 270 | /* we only added PIMListViews so we can safely cast */ |
271 | PIMListView *view = static_cast<PIMListView*>(m_tab->currentWidget() ); | 271 | PIMListView *view = static_cast<PIMListView*>(m_tab->currentWidget() ); |
272 | 272 | ||
273 | /* ask the view to send a signal */ | 273 | /* ask the view to send a signal */ |
274 | view->showCurrentRecord(); | 274 | view->showCurrentRecord(); |
275 | 275 | ||
276 | } | 276 | } |
277 | 277 | ||
278 | /* as answer this slot will be called */ | 278 | /* as answer this slot will be called */ |
279 | void MainWindow::slotShowRecord( const OPimRecord& rec) { | 279 | void MainWindow::slotShowRecord( const OPimRecord& rec) { |
280 | /* got a parent but still is a toplevel MODAL dialog */ | 280 | /* got a parent but still is a toplevel MODAL dialog */ |
281 | QDialog* dia = new QDialog(this,"dialog",TRUE ); | 281 | QDialog* dia = new QDialog(this,"dialog",TRUE ); |
282 | QVBoxLayout *box = new QVBoxLayout( dia ); | 282 | QVBoxLayout *box = new QVBoxLayout( dia ); |
283 | dia->setCaption( tr("View Record") ); | 283 | dia->setCaption( tr("View Record") ); |
284 | 284 | ||
285 | 285 | ||
286 | QTextView *view = new QTextView(dia ); | 286 | QTextView *view = new QTextView(dia ); |
287 | view->setText( rec.toRichText() ); | 287 | view->setText( rec.toRichText() ); |
288 | box->addWidget( view ); | 288 | box->addWidget( view ); |
289 | /* | 289 | /* |
290 | * execute via QPEApplication | 290 | * execute via QPEApplication |
291 | * this allows QPEApplication to make a sane decision | 291 | * this allows QPEApplication to make a sane decision |
292 | * on the size | 292 | * on the size |
293 | */ | 293 | */ |
294 | dia->showMaximized(); | 294 | dia->showMaximized(); |
295 | QPEApplication::execDialog( dia ); | 295 | QPEApplication::execDialog( dia ); |
296 | delete dia; | 296 | delete dia; |
297 | } | 297 | } |
298 | 298 | ||
299 | 299 | ||
300 | void MainWindow::slotDate() { | 300 | void MainWindow::slotDate() { |
301 | /* | 301 | /* |
302 | * called by the action we will show a Popup | 302 | * called by the action we will show a Popup |
303 | * at the current mouse position with a DateChooser | 303 | * at the current mouse position with a DateChooser |
304 | * to select the day | 304 | * to select the day |
305 | */ | 305 | */ |
306 | qWarning("slot Date"); | 306 | qWarning("slot Date"); |
307 | QPopupMenu *menu = new QPopupMenu(); | 307 | QPopupMenu *menu = new QPopupMenu(); |
308 | /* A Month to select a date from TRUE for auto close */ | 308 | /* A Month to select a date from TRUE for auto close */ |
309 | DateBookMonth *month = new DateBookMonth(menu, 0, true ); | 309 | DateBookMonth *month = new DateBookMonth(menu, 0, true ); |
310 | connect(month, SIGNAL(dateClicked(int, int, int) ), | 310 | connect(month, SIGNAL(dateClicked(int,int,int) ), |
311 | this, SLOT(slotLoadForDay(int, int, int) ) ); | 311 | this, SLOT(slotLoadForDay(int,int,int) ) ); |
312 | 312 | ||
313 | menu->insertItem( month ); | 313 | menu->insertItem( month ); |
314 | 314 | ||
315 | menu->exec( QCursor::pos() ); | 315 | menu->exec( QCursor::pos() ); |
316 | 316 | ||
317 | /* | 317 | /* |
318 | * we do not need to delete month because | 318 | * we do not need to delete month because |
319 | * we delete its parent menu | 319 | * we delete its parent menu |
320 | */ | 320 | */ |
321 | 321 | ||
322 | delete menu; | 322 | delete menu; |
323 | } | 323 | } |
324 | 324 | ||
325 | /* | 325 | /* |
326 | * An anonymous namespace this symbol is only available here | 326 | * An anonymous namespace this symbol is only available here |
327 | * so truely private | 327 | * so truely private |
328 | */ | 328 | */ |
329 | namespace { | 329 | namespace { |
330 | /* not static cause namespace does that what static would do */ | 330 | /* not static cause namespace does that what static would do */ |
331 | const int RTTI = 5050; | 331 | const int RTTI = 5050; |
332 | /* | 332 | /* |
333 | * every ListView got Items. we've special pim items | 333 | * every ListView got Items. we've special pim items |
334 | * holding ownership and the pointer to a pim record | 334 | * holding ownership and the pointer to a pim record |
335 | * it can't hold a pimrecord directly because this | 335 | * it can't hold a pimrecord directly because this |
336 | * would introduce slicing... any break | 336 | * would introduce slicing... any break |
337 | */ | 337 | */ |
338 | /* | 338 | /* |
339 | * A struct is a special class. Everything is public by | 339 | * A struct is a special class. Everything is public by |
340 | * default. | 340 | * default. |
341 | */ | 341 | */ |
342 | struct PIMListViewItem : public QListViewItem { | 342 | struct PIMListViewItem : public QListViewItem { |
343 | /* | 343 | /* |
344 | *currently no hierachies are planed for the example | 344 | *currently no hierachies are planed for the example |
345 | * so only one constructor with a QListView as parent | 345 | * so only one constructor with a QListView as parent |
346 | */ | 346 | */ |
347 | PIMListViewItem( QListView*, OPimRecord* record ); | 347 | PIMListViewItem( QListView*, OPimRecord* record ); |
348 | ~PIMListViewItem(); | 348 | ~PIMListViewItem(); |
349 | 349 | ||
350 | /* used by the QListViewItem to easily allow identifiying of different | 350 | /* used by the QListViewItem to easily allow identifiying of different |
351 | * items. Values greater than 1000 should be used */ | 351 | * items. Values greater than 1000 should be used */ |
352 | int rtti()const; | 352 | int rtti()const; |
353 | OPimRecord* record()const; | 353 | OPimRecord* record()const; |
354 | 354 | ||
355 | private: | 355 | private: |
356 | OPimRecord* m_record; | 356 | OPimRecord* m_record; |
357 | }; | 357 | }; |
358 | 358 | ||
359 | PIMListViewItem::PIMListViewItem( QListView *p, OPimRecord* rec ) | 359 | PIMListViewItem::PIMListViewItem( QListView *p, OPimRecord* rec ) |
360 | : QListViewItem(p), m_record( rec ) { | 360 | : QListViewItem(p), m_record( rec ) { |
361 | } | 361 | } |
362 | 362 | ||
363 | PIMListViewItem::~PIMListViewItem() { | 363 | PIMListViewItem::~PIMListViewItem() { |
364 | /* we've the onwership so we need to delete it */ | 364 | /* we've the onwership so we need to delete it */ |
365 | delete m_record; | 365 | delete m_record; |
366 | } | 366 | } |
367 | 367 | ||
368 | OPimRecord* PIMListViewItem::record()const { | 368 | OPimRecord* PIMListViewItem::record()const { |
369 | return m_record; | 369 | return m_record; |
370 | } | 370 | } |
371 | 371 | ||
372 | } | 372 | } |
373 | 373 | ||
374 | 374 | ||
375 | PIMListView::PIMListView( QWidget* widget, const char* name, WFlags fl ) | 375 | PIMListView::PIMListView( QWidget* widget, const char* name, WFlags fl ) |
376 | : QListView(widget, name, fl ) | 376 | : QListView(widget, name, fl ) |
377 | { | 377 | { |
378 | addColumn("Summary"); | 378 | addColumn("Summary"); |
379 | } | 379 | } |
380 | 380 | ||
381 | PIMListView::~PIMListView() { | 381 | PIMListView::~PIMListView() { |
382 | 382 | ||
383 | } | 383 | } |
384 | 384 | ||
385 | void PIMListView::set( OTodoAccess::List list ) { | 385 | void PIMListView::set( OTodoAccess::List list ) { |
386 | /* clear first and then add new items */ | 386 | /* clear first and then add new items */ |
387 | clear(); | 387 | clear(); |
388 | 388 | ||
389 | OTodoAccess::List::Iterator it; | 389 | OTodoAccess::List::Iterator it; |
390 | for (it = list.begin(); it != list.end(); ++it ) { | 390 | for (it = list.begin(); it != list.end(); ++it ) { |
391 | /* | 391 | /* |
392 | * make a new item which automatically gets added to the listview | 392 | * make a new item which automatically gets added to the listview |
393 | * and call the copy c'tor to create a new OTodo | 393 | * and call the copy c'tor to create a new OTodo |
394 | */ | 394 | */ |
395 | PIMListViewItem *i = new PIMListViewItem(this, new OTodo( *it ) ); | 395 | PIMListViewItem *i = new PIMListViewItem(this, new OTodo( *it ) ); |
396 | i->setText(0, (*it).summary() ); | 396 | i->setText(0, (*it).summary() ); |
397 | } | 397 | } |
398 | } | 398 | } |
399 | 399 | ||
400 | void PIMListView::set( const OEffectiveEvent::ValueList& lst ) { | 400 | void PIMListView::set( const OEffectiveEvent::ValueList& lst ) { |
401 | /* clear first and then add items */ | 401 | /* clear first and then add items */ |
402 | clear(); | 402 | clear(); |
403 | 403 | ||
404 | OEffectiveEvent::ValueList::ConstIterator it; | 404 | OEffectiveEvent::ValueList::ConstIterator it; |
405 | for ( it = lst.begin(); it != lst.end(); ++it ) { | 405 | for ( it = lst.begin(); it != lst.end(); ++it ) { |
406 | PIMListViewItem *i = new PIMListViewItem(this, new OEvent( (*it).event() ) ); | 406 | PIMListViewItem *i = new PIMListViewItem(this, new OEvent( (*it).event() ) ); |
407 | i->setText( 0, PIMListView::makeString( (*it) ) ); | 407 | i->setText( 0, PIMListView::makeString( (*it) ) ); |
diff --git a/inputmethods/handwriting/qimpenhelp.cpp b/inputmethods/handwriting/qimpenhelp.cpp index a294301..0727931 100644 --- a/inputmethods/handwriting/qimpenhelp.cpp +++ b/inputmethods/handwriting/qimpenhelp.cpp | |||
@@ -70,221 +70,221 @@ static const char * const right_xpm[] = { | |||
70 | " ", | 70 | " ", |
71 | " . ", | 71 | " . ", |
72 | " .. ", | 72 | " .. ", |
73 | " ... ", | 73 | " ... ", |
74 | " .... ", | 74 | " .... ", |
75 | " ..... ", | 75 | " ..... ", |
76 | " ...... ", | 76 | " ...... ", |
77 | " ..... ", | 77 | " ..... ", |
78 | " .... ", | 78 | " .... ", |
79 | " ... ", | 79 | " ... ", |
80 | " .. ", | 80 | " .. ", |
81 | " . ", | 81 | " . ", |
82 | " ", | 82 | " ", |
83 | " "}; | 83 | " "}; |
84 | 84 | ||
85 | class CharListItem : public QListBoxText | 85 | class CharListItem : public QListBoxText |
86 | { | 86 | { |
87 | public: | 87 | public: |
88 | CharListItem( const QString &text, uint c ) | 88 | CharListItem( const QString &text, uint c ) |
89 | : QListBoxText( text ) | 89 | : QListBoxText( text ) |
90 | { | 90 | { |
91 | _code = c; | 91 | _code = c; |
92 | } | 92 | } |
93 | 93 | ||
94 | uint code() const { return _code; } | 94 | uint code() const { return _code; } |
95 | 95 | ||
96 | protected: | 96 | protected: |
97 | uint _code; | 97 | uint _code; |
98 | }; | 98 | }; |
99 | 99 | ||
100 | HandwritingHelp::HandwritingHelp( QIMPenProfile *p, QWidget *parent, const char *name, WFlags f ) | 100 | HandwritingHelp::HandwritingHelp( QIMPenProfile *p, QWidget *parent, const char *name, WFlags f ) |
101 | : QTabWidget( parent, name, f ) | 101 | : QTabWidget( parent, name, f ) |
102 | { | 102 | { |
103 | setCaption( tr("Handwriting Help") ); | 103 | setCaption( tr("Handwriting Help") ); |
104 | QTextView *help = new QTextView( this ); | 104 | QTextView *help = new QTextView( this ); |
105 | help->setFrameStyle( QFrame::NoFrame ); | 105 | help->setFrameStyle( QFrame::NoFrame ); |
106 | help->setText( | 106 | help->setText( |
107 | tr( "<ul><li>When you start to use the handwriting recogniser " | 107 | tr( "<ul><li>When you start to use the handwriting recogniser " |
108 | "write slowly, accurately and firmly." | 108 | "write slowly, accurately and firmly." |
109 | "<li>Use the guide lines when drawing your characters." | 109 | "<li>Use the guide lines when drawing your characters." |
110 | "<li>When drawing a character with multiple strokes, each " | 110 | "<li>When drawing a character with multiple strokes, each " |
111 | "successive stroke must be drawn before the grayed strokes are erased." | 111 | "successive stroke must be drawn before the grayed strokes are erased." |
112 | "<li>Practice your handwriting using the handwriting trainer." | 112 | "<li>Practice your handwriting using the handwriting trainer." |
113 | "<li>When adding your own character templates make sure they " | 113 | "<li>When adding your own character templates make sure they " |
114 | "are sufficiently different from other characters' templates." | 114 | "are sufficiently different from other characters' templates." |
115 | "</ul>") ); | 115 | "</ul>") ); |
116 | 116 | ||
117 | addTab( help, tr("Tips") ); | 117 | addTab( help, tr("Tips") ); |
118 | 118 | ||
119 | HandwritingTrainer *trainer = new HandwritingTrainer( p, this ); | 119 | HandwritingTrainer *trainer = new HandwritingTrainer( p, this ); |
120 | addTab( trainer, tr("Trainer") ); | 120 | addTab( trainer, tr("Trainer") ); |
121 | } | 121 | } |
122 | 122 | ||
123 | void HandwritingHelp::showEvent( QShowEvent * ) | 123 | void HandwritingHelp::showEvent( QShowEvent * ) |
124 | { | 124 | { |
125 | Global::hideInputMethod(); | 125 | Global::hideInputMethod(); |
126 | } | 126 | } |
127 | 127 | ||
128 | void HandwritingHelp::hideEvent( QHideEvent * ) | 128 | void HandwritingHelp::hideEvent( QHideEvent * ) |
129 | { | 129 | { |
130 | Global::showInputMethod(); | 130 | Global::showInputMethod(); |
131 | } | 131 | } |
132 | 132 | ||
133 | //--------------------------------------------------------------------------- | 133 | //--------------------------------------------------------------------------- |
134 | 134 | ||
135 | HandwritingTrainer::HandwritingTrainer( QIMPenProfile *p, QWidget *parent, const char *name ) | 135 | HandwritingTrainer::HandwritingTrainer( QIMPenProfile *p, QWidget *parent, const char *name ) |
136 | : QWidget( parent, name ), profile(p) | 136 | : QWidget( parent, name ), profile(p) |
137 | { | 137 | { |
138 | QGridLayout *gl = new QGridLayout( this, 4, 2, 0, 4 ); | 138 | QGridLayout *gl = new QGridLayout( this, 4, 2, 0, 4 ); |
139 | gl->setColStretch( 1, 1 ); | 139 | gl->setColStretch( 1, 1 ); |
140 | gl->setRowStretch(3, 1); | 140 | gl->setRowStretch(3, 1); |
141 | 141 | ||
142 | charSetCombo = new QComboBox( this ); | 142 | charSetCombo = new QComboBox( this ); |
143 | gl->addMultiCellWidget( charSetCombo, 0, 0, 0, 1 ); | 143 | gl->addMultiCellWidget( charSetCombo, 0, 0, 0, 1 ); |
144 | connect( charSetCombo, SIGNAL(activated(int)), SLOT(selectCharSet(int))); | 144 | connect( charSetCombo, SIGNAL(activated(int)), SLOT(selectCharSet(int))); |
145 | QIMPenCharSetIterator it( profile->charSets() ); | 145 | QIMPenCharSetIterator it( profile->charSets() ); |
146 | for ( ; it.current(); ++it ) { | 146 | for ( ; it.current(); ++it ) { |
147 | charSetCombo->insertItem( it.current()->description() ); | 147 | charSetCombo->insertItem( it.current()->description() ); |
148 | } | 148 | } |
149 | 149 | ||
150 | charList = new QListBox( this ); | 150 | charList = new QListBox( this ); |
151 | charList->setHScrollBarMode( QListBox::AlwaysOff ); | 151 | charList->setHScrollBarMode( QListBox::AlwaysOff ); |
152 | charList->setFixedWidth(80); | 152 | charList->setFixedWidth(80); |
153 | connect( charList, SIGNAL(highlighted(int)), this, SLOT(selectChar(int)) ); | 153 | connect( charList, SIGNAL(highlighted(int)), this, SLOT(selectChar(int)) ); |
154 | gl->addWidget(charList, 1, 0); | 154 | gl->addWidget(charList, 1, 0); |
155 | 155 | ||
156 | result = new QLabel( this ); | 156 | result = new QLabel( this ); |
157 | result->setAlignment(AlignLeft | AlignVCenter | WordBreak); | 157 | result->setAlignment(AlignLeft | AlignVCenter | WordBreak); |
158 | result->setText( | 158 | result->setText( |
159 | tr( "Select a reference character from the list. Practice writing in " | 159 | tr( "Select a reference character from the list. Practice writing in " |
160 | "the area on the right.")); | 160 | "the area on the right.")); |
161 | gl->addMultiCellWidget(result, 1, 2, 1, 1); | 161 | gl->addMultiCellWidget(result, 1, 2, 1, 1); |
162 | 162 | ||
163 | matcher = new QIMPenMatch( this ); | 163 | matcher = new QIMPenMatch( this ); |
164 | matcher->setCharSet( currentSet ); | 164 | matcher->setCharSet( currentSet ); |
165 | connect( matcher, SIGNAL(noMatch()), this, SLOT(noMatch()) ); | 165 | connect( matcher, SIGNAL(noMatch()), this, SLOT(noMatch()) ); |
166 | connect( matcher, SIGNAL(matchedCharacters(const QIMPenCharMatchList &)), | 166 | connect( matcher, SIGNAL(matchedCharacters(const QIMPenCharMatchList&)), |
167 | this, SLOT(matched(const QIMPenCharMatchList &)) ); | 167 | this, SLOT(matched(const QIMPenCharMatchList&)) ); |
168 | 168 | ||
169 | QHBoxLayout *hb = new QHBoxLayout(); | 169 | QHBoxLayout *hb = new QHBoxLayout(); |
170 | gl->addLayout( hb, 2, 0 ); | 170 | gl->addLayout( hb, 2, 0 ); |
171 | prevBtn = new QPushButton( this ); | 171 | prevBtn = new QPushButton( this ); |
172 | prevBtn->setPixmap( QPixmap( (const char **)left_xpm ) ); | 172 | prevBtn->setPixmap( QPixmap( (const char **)left_xpm ) ); |
173 | connect( prevBtn, SIGNAL(clicked()), SLOT(prevChar())); | 173 | connect( prevBtn, SIGNAL(clicked()), SLOT(prevChar())); |
174 | hb->addWidget( prevBtn ); | 174 | hb->addWidget( prevBtn ); |
175 | 175 | ||
176 | nextBtn = new QPushButton( this ); | 176 | nextBtn = new QPushButton( this ); |
177 | nextBtn->setPixmap( QPixmap( (const char **)right_xpm ) ); | 177 | nextBtn->setPixmap( QPixmap( (const char **)right_xpm ) ); |
178 | connect( nextBtn, SIGNAL(clicked()), SLOT(nextChar())); | 178 | connect( nextBtn, SIGNAL(clicked()), SLOT(nextChar())); |
179 | hb->addWidget( nextBtn ); | 179 | hb->addWidget( nextBtn ); |
180 | 180 | ||
181 | refPw = new QIMPenWidget( this ); | 181 | refPw = new QIMPenWidget( this ); |
182 | refPw->setReadOnly( TRUE ); | 182 | refPw->setReadOnly( TRUE ); |
183 | gl->addWidget( refPw, 3, 0 ); | 183 | gl->addWidget( refPw, 3, 0 ); |
184 | 184 | ||
185 | pracPw = new QIMPenWidget( this ); | 185 | pracPw = new QIMPenWidget( this ); |
186 | connect( matcher, SIGNAL(removeStroke()), pracPw, SLOT(removeStroke()) ); | 186 | connect( matcher, SIGNAL(removeStroke()), pracPw, SLOT(removeStroke()) ); |
187 | connect( pracPw, SIGNAL(beginStroke()), | 187 | connect( pracPw, SIGNAL(beginStroke()), |
188 | this, SLOT(beginStroke()) ); | 188 | this, SLOT(beginStroke()) ); |
189 | connect( pracPw, SIGNAL(stroke( QIMPenStroke * )), | 189 | connect( pracPw, SIGNAL(stroke(QIMPenStroke*)), |
190 | this, SLOT(strokeEntered( QIMPenStroke * )) ); | 190 | this, SLOT(strokeEntered(QIMPenStroke*)) ); |
191 | connect( pracPw, SIGNAL(beginStroke()), | 191 | connect( pracPw, SIGNAL(beginStroke()), |
192 | matcher, SLOT(beginStroke()) ); | 192 | matcher, SLOT(beginStroke()) ); |
193 | connect( pracPw, SIGNAL(stroke( QIMPenStroke * )), | 193 | connect( pracPw, SIGNAL(stroke(QIMPenStroke*)), |
194 | matcher, SLOT(strokeEntered( QIMPenStroke * )) ); | 194 | matcher, SLOT(strokeEntered(QIMPenStroke*)) ); |
195 | gl->addWidget( pracPw, 3, 1 ); | 195 | gl->addWidget( pracPw, 3, 1 ); |
196 | 196 | ||
197 | redrawTimer = new QTimer( this ); | 197 | redrawTimer = new QTimer( this ); |
198 | connect( redrawTimer, SIGNAL(timeout()), this, SLOT(redrawChar()) ); | 198 | connect( redrawTimer, SIGNAL(timeout()), this, SLOT(redrawChar()) ); |
199 | redrawTimer->start( 5000 ); | 199 | redrawTimer->start( 5000 ); |
200 | 200 | ||
201 | currentSet = 0; | 201 | currentSet = 0; |
202 | charSetCombo->setCurrentItem( 1 ); | 202 | charSetCombo->setCurrentItem( 1 ); |
203 | selectCharSet( 1 ); | 203 | selectCharSet( 1 ); |
204 | } | 204 | } |
205 | 205 | ||
206 | HandwritingTrainer::~HandwritingTrainer() | 206 | HandwritingTrainer::~HandwritingTrainer() |
207 | { | 207 | { |
208 | } | 208 | } |
209 | 209 | ||
210 | void HandwritingTrainer::showEvent( QShowEvent * ) | 210 | void HandwritingTrainer::showEvent( QShowEvent * ) |
211 | { | 211 | { |
212 | redrawChar(); | 212 | redrawChar(); |
213 | redrawTimer->start( 5000 ); | 213 | redrawTimer->start( 5000 ); |
214 | } | 214 | } |
215 | 215 | ||
216 | void HandwritingTrainer::setCurrentChar( QIMPenChar *c ) | 216 | void HandwritingTrainer::setCurrentChar( QIMPenChar *c ) |
217 | { | 217 | { |
218 | currentChar = c; | 218 | currentChar = c; |
219 | refPw->showCharacter( currentChar ); | 219 | refPw->showCharacter( currentChar ); |
220 | pracPw->clear(); | 220 | pracPw->clear(); |
221 | if ( currentChar ) { | 221 | if ( currentChar ) { |
222 | prevBtn->setEnabled( findPrev() != 0 ); | 222 | prevBtn->setEnabled( findPrev() != 0 ); |
223 | nextBtn->setEnabled( findNext() != 0 ); | 223 | nextBtn->setEnabled( findNext() != 0 ); |
224 | } | 224 | } |
225 | redrawTimer->start( 5000 ); | 225 | redrawTimer->start( 5000 ); |
226 | } | 226 | } |
227 | 227 | ||
228 | void HandwritingTrainer::selectChar( int i ) | 228 | void HandwritingTrainer::selectChar( int i ) |
229 | { | 229 | { |
230 | static int last_char = 0; | 230 | static int last_char = 0; |
231 | 231 | ||
232 | if (last_char != i) { | 232 | if (last_char != i) { |
233 | result->setText(""); | 233 | result->setText(""); |
234 | } | 234 | } |
235 | 235 | ||
236 | currentChar = 0; | 236 | currentChar = 0; |
237 | currentCode = ((CharListItem *)charList->item(i))->code(); | 237 | currentCode = ((CharListItem *)charList->item(i))->code(); |
238 | QIMPenCharIterator it(currentSet->characters() ); | 238 | QIMPenCharIterator it(currentSet->characters() ); |
239 | for ( ; it.current(); ++it ) { | 239 | for ( ; it.current(); ++it ) { |
240 | if ( it.current()->character() == currentCode && | 240 | if ( it.current()->character() == currentCode && |
241 | !it.current()->testFlag( QIMPenChar::Deleted ) ) { | 241 | !it.current()->testFlag( QIMPenChar::Deleted ) ) { |
242 | setCurrentChar( it.current() ); | 242 | setCurrentChar( it.current() ); |
243 | break; | 243 | break; |
244 | } | 244 | } |
245 | } | 245 | } |
246 | if ( !it.current() ) | 246 | if ( !it.current() ) |
247 | setCurrentChar( 0 ); | 247 | setCurrentChar( 0 ); |
248 | } | 248 | } |
249 | 249 | ||
250 | void HandwritingTrainer::selectCharSet( int i ) | 250 | void HandwritingTrainer::selectCharSet( int i ) |
251 | { | 251 | { |
252 | if ( currentSet ) { | 252 | if ( currentSet ) { |
253 | refPw->removeCharSet( 0 ); | 253 | refPw->removeCharSet( 0 ); |
254 | pracPw->removeCharSet( 0 ); | 254 | pracPw->removeCharSet( 0 ); |
255 | result->setText(""); | 255 | result->setText(""); |
256 | } | 256 | } |
257 | currentSet = profile->charSets().at( i ); | 257 | currentSet = profile->charSets().at( i ); |
258 | fillCharList(); | 258 | fillCharList(); |
259 | refPw->insertCharSet( currentSet ); | 259 | refPw->insertCharSet( currentSet ); |
260 | pracPw->insertCharSet( currentSet ); | 260 | pracPw->insertCharSet( currentSet ); |
261 | matcher->setCharSet( currentSet ); | 261 | matcher->setCharSet( currentSet ); |
262 | if ( charList->count() ) { | 262 | if ( charList->count() ) { |
263 | charList->setSelected( 0, TRUE ); | 263 | charList->setSelected( 0, TRUE ); |
264 | selectChar(0); | 264 | selectChar(0); |
265 | } | 265 | } |
266 | } | 266 | } |
267 | 267 | ||
268 | void HandwritingTrainer::noMatch() | 268 | void HandwritingTrainer::noMatch() |
269 | { | 269 | { |
270 | result->setText( tr("No match") ); | 270 | result->setText( tr("No match") ); |
271 | } | 271 | } |
272 | 272 | ||
273 | void HandwritingTrainer::matched( const QIMPenCharMatchList &ml ) | 273 | void HandwritingTrainer::matched( const QIMPenCharMatchList &ml ) |
274 | { | 274 | { |
275 | int maxErr = 20000 + (*ml.begin()).penChar->strokeLength(0) * 1000; | 275 | int maxErr = 20000 + (*ml.begin()).penChar->strokeLength(0) * 1000; |
276 | int baseErr = (*ml.begin()).penChar->strokeLength(0) * 250; | 276 | int baseErr = (*ml.begin()).penChar->strokeLength(0) * 250; |
277 | unsigned int numStrokes = (*ml.begin()).penChar->strokeCount(); | 277 | unsigned int numStrokes = (*ml.begin()).penChar->strokeCount(); |
278 | QIMPenCharMatchList::ConstIterator it; | 278 | QIMPenCharMatchList::ConstIterator it; |
279 | /* | 279 | /* |
280 | for ( it = ml.begin(); it != ml.end(); ++it ) { | 280 | for ( it = ml.begin(); it != ml.end(); ++it ) { |
281 | if ( (*it).penChar->strokeCount() == numStrokes ) { | 281 | if ( (*it).penChar->strokeCount() == numStrokes ) { |
282 | if ( (*it).error > maxErr ) | 282 | if ( (*it).error > maxErr ) |
283 | maxErr = (*it).error; | 283 | maxErr = (*it).error; |
284 | } | 284 | } |
285 | } | 285 | } |
286 | */ | 286 | */ |
287 | int i; | 287 | int i; |
288 | QString res; | 288 | QString res; |
289 | QTextStream ts(&res, IO_WriteOnly); | 289 | QTextStream ts(&res, IO_WriteOnly); |
290 | ts << "<qt>" << tr("Matched: "); | 290 | ts << "<qt>" << tr("Matched: "); |
diff --git a/inputmethods/handwriting/qimpeninput.cpp b/inputmethods/handwriting/qimpeninput.cpp index db33c9b..d073cdf 100644 --- a/inputmethods/handwriting/qimpeninput.cpp +++ b/inputmethods/handwriting/qimpeninput.cpp | |||
@@ -56,253 +56,253 @@ static const char * const pen_xpm[] = { | |||
56 | " .+@@. ", | 56 | " .+@@. ", |
57 | " .+@@. ", | 57 | " .+@@. ", |
58 | " .@.@. ", | 58 | " .@.@. ", |
59 | " .@@. ", | 59 | " .@@. ", |
60 | " .... ", | 60 | " .... ", |
61 | " .. ", | 61 | " .. ", |
62 | " "}; | 62 | " "}; |
63 | 63 | ||
64 | 64 | ||
65 | /* XPM */ | 65 | /* XPM */ |
66 | static char * bs_xpm[] = { | 66 | static char * bs_xpm[] = { |
67 | "12 12 5 1", | 67 | "12 12 5 1", |
68 | " c None", | 68 | " c None", |
69 | ".c #333333", | 69 | ".c #333333", |
70 | "+c #000000", | 70 | "+c #000000", |
71 | "@c #FFFFFF", | 71 | "@c #FFFFFF", |
72 | "#c #666666", | 72 | "#c #666666", |
73 | " ", | 73 | " ", |
74 | " ", | 74 | " ", |
75 | " ", | 75 | " ", |
76 | " . ", | 76 | " . ", |
77 | " ++ ", | 77 | " ++ ", |
78 | " +@#+++++. ", | 78 | " +@#+++++. ", |
79 | " +@@@@@@@@+ ", | 79 | " +@@@@@@@@+ ", |
80 | " +@#+++++. ", | 80 | " +@#+++++. ", |
81 | " ++ ", | 81 | " ++ ", |
82 | " . ", | 82 | " . ", |
83 | " ", | 83 | " ", |
84 | " "}; | 84 | " "}; |
85 | 85 | ||
86 | 86 | ||
87 | /* XPM */ | 87 | /* XPM */ |
88 | static char * enter_xpm[] = { | 88 | static char * enter_xpm[] = { |
89 | "12 12 5 1", | 89 | "12 12 5 1", |
90 | " c None", | 90 | " c None", |
91 | ".c #333333", | 91 | ".c #333333", |
92 | "+c #000000", | 92 | "+c #000000", |
93 | "@c #FFFFFF", | 93 | "@c #FFFFFF", |
94 | "#c #666666", | 94 | "#c #666666", |
95 | " ", | 95 | " ", |
96 | " .+. ", | 96 | " .+. ", |
97 | " +@+ ", | 97 | " +@+ ", |
98 | " . +@+ ", | 98 | " . +@+ ", |
99 | " ++ +@+ ", | 99 | " ++ +@+ ", |
100 | " +@#++++@+ ", | 100 | " +@#++++@+ ", |
101 | " +@@@@@@@@+ ", | 101 | " +@@@@@@@@+ ", |
102 | " +@#+++++. ", | 102 | " +@#+++++. ", |
103 | " ++ ", | 103 | " ++ ", |
104 | " . ", | 104 | " . ", |
105 | " ", | 105 | " ", |
106 | " "}; | 106 | " "}; |
107 | 107 | ||
108 | 108 | ||
109 | 109 | ||
110 | /* XPM */ | 110 | /* XPM */ |
111 | static char * help_xpm[] = { | 111 | static char * help_xpm[] = { |
112 | "12 12 5 1", | 112 | "12 12 5 1", |
113 | " c None", | 113 | " c None", |
114 | ".c #000000", | 114 | ".c #000000", |
115 | "+c #FFFFFF", | 115 | "+c #FFFFFF", |
116 | "@c #666666", | 116 | "@c #666666", |
117 | "#c #333333", | 117 | "#c #333333", |
118 | " ", | 118 | " ", |
119 | " ... ", | 119 | " ... ", |
120 | " .+++. ", | 120 | " .+++. ", |
121 | " .+..@+. ", | 121 | " .+..@+. ", |
122 | " #.# .+. ", | 122 | " #.# .+. ", |
123 | " .+. ", | 123 | " .+. ", |
124 | " .+. ", | 124 | " .+. ", |
125 | " .+. ", | 125 | " .+. ", |
126 | " .+. ", | 126 | " .+. ", |
127 | " #.# ", | 127 | " #.# ", |
128 | " .+. ", | 128 | " .+. ", |
129 | " #.# "}; | 129 | " #.# "}; |
130 | 130 | ||
131 | 131 | ||
132 | /*! | 132 | /*! |
133 | \class QIMPenInput qimpeninput.h | 133 | \class QIMPenInput qimpeninput.h |
134 | 134 | ||
135 | Pen input widget. | 135 | Pen input widget. |
136 | */ | 136 | */ |
137 | QIMPenInput::QIMPenInput( QWidget *parent, const char *name, WFlags wf ) | 137 | QIMPenInput::QIMPenInput( QWidget *parent, const char *name, WFlags wf ) |
138 | : QFrame( parent, name, wf ), helpDlg(0), profile(0) | 138 | : QFrame( parent, name, wf ), helpDlg(0), profile(0) |
139 | { | 139 | { |
140 | setFrameStyle( Box | Plain ); | 140 | setFrameStyle( Box | Plain ); |
141 | 141 | ||
142 | profileList.setAutoDelete( true ); | 142 | profileList.setAutoDelete( true ); |
143 | 143 | ||
144 | matcher = new QIMPenMatch( this ); | 144 | matcher = new QIMPenMatch( this ); |
145 | connect( matcher, SIGNAL(keypress(uint)), this, SLOT(keypress(uint)) ); | 145 | connect( matcher, SIGNAL(keypress(uint)), this, SLOT(keypress(uint)) ); |
146 | connect( matcher, SIGNAL(erase()), this, SLOT(erase()) ); | 146 | connect( matcher, SIGNAL(erase()), this, SLOT(erase()) ); |
147 | 147 | ||
148 | QGridLayout *gl = new QGridLayout( this, 5, 2, 1, 0 ); | 148 | QGridLayout *gl = new QGridLayout( this, 5, 2, 1, 0 ); |
149 | gl->setColStretch( 0, 1 ); | 149 | gl->setColStretch( 0, 1 ); |
150 | 150 | ||
151 | wordPicker = new QIMPenWordPick( this ); | 151 | wordPicker = new QIMPenWordPick( this ); |
152 | connect( wordPicker, SIGNAL(wordClicked(const QString &)), | 152 | connect( wordPicker, SIGNAL(wordClicked(const QString&)), |
153 | this, SLOT(wordPicked(const QString &)) ); | 153 | this, SLOT(wordPicked(const QString&)) ); |
154 | connect( matcher, SIGNAL(matchedCharacters(const QIMPenCharMatchList &)), | 154 | connect( matcher, SIGNAL(matchedCharacters(const QIMPenCharMatchList&)), |
155 | this, SLOT(matchedCharacters(const QIMPenCharMatchList &)) ); | 155 | this, SLOT(matchedCharacters(const QIMPenCharMatchList&)) ); |
156 | connect( matcher, SIGNAL(matchedWords(const QIMPenMatch::MatchWordList&)), | 156 | connect( matcher, SIGNAL(matchedWords(const QIMPenMatch::MatchWordList&)), |
157 | wordPicker, SLOT(setWords(const QIMPenMatch::MatchWordList&)) ); | 157 | wordPicker, SLOT(setWords(const QIMPenMatch::MatchWordList&)) ); |
158 | QFont f("smallsmooth",9); | 158 | QFont f("smallsmooth",9); |
159 | QFontInfo fi( f ); | 159 | QFontInfo fi( f ); |
160 | wordPicker->setFont( f ); | 160 | wordPicker->setFont( f ); |
161 | wordPicker->setBackgroundColor( white ); | 161 | wordPicker->setBackgroundColor( white ); |
162 | gl->addMultiCellWidget( wordPicker, 0, 0, 0, 1 ); | 162 | gl->addMultiCellWidget( wordPicker, 0, 0, 0, 1 ); |
163 | if ( !Global::fixedDawg().root() || !matcher->isWordMatchingEnabled() ) | 163 | if ( !Global::fixedDawg().root() || !matcher->isWordMatchingEnabled() ) |
164 | wordPicker->hide(); | 164 | wordPicker->hide(); |
165 | 165 | ||
166 | pw = new QIMPenWidget( this ); | 166 | pw = new QIMPenWidget( this ); |
167 | gl->addMultiCellWidget( pw, 1, 4, 0, 0 ); | 167 | gl->addMultiCellWidget( pw, 1, 4, 0, 0 ); |
168 | 168 | ||
169 | int bh = pw->sizeHint().height()/4; | 169 | int bh = pw->sizeHint().height()/4; |
170 | 170 | ||
171 | QPushButton *b = new QPushButton( this ); | 171 | QPushButton *b = new QPushButton( this ); |
172 | b->setFocusPolicy( NoFocus ); | 172 | b->setFocusPolicy( NoFocus ); |
173 | b->setPixmap( QPixmap( (const char **)bs_xpm ) ); | 173 | b->setPixmap( QPixmap( (const char **)bs_xpm ) ); |
174 | b->setFixedHeight(pw->sizeHint().height()-3*bh); // left-over space goes here | 174 | b->setFixedHeight(pw->sizeHint().height()-3*bh); // left-over space goes here |
175 | b->setAutoRepeat( TRUE ); | 175 | b->setAutoRepeat( TRUE ); |
176 | gl->addWidget( b, 1, 1 ); | 176 | gl->addWidget( b, 1, 1 ); |
177 | connect( b, SIGNAL(clicked()), SLOT(backspace())); | 177 | connect( b, SIGNAL(clicked()), SLOT(backspace())); |
178 | 178 | ||
179 | b = new QPushButton( this ); | 179 | b = new QPushButton( this ); |
180 | b->setFocusPolicy( NoFocus ); | 180 | b->setFocusPolicy( NoFocus ); |
181 | b->setPixmap( QPixmap( (const char **)enter_xpm ) ); | 181 | b->setPixmap( QPixmap( (const char **)enter_xpm ) ); |
182 | b->setFixedHeight(bh); | 182 | b->setFixedHeight(bh); |
183 | b->setAutoRepeat( TRUE ); | 183 | b->setAutoRepeat( TRUE ); |
184 | gl->addWidget( b, 2, 1 ); | 184 | gl->addWidget( b, 2, 1 ); |
185 | connect( b, SIGNAL(clicked()), SLOT(enter())); | 185 | connect( b, SIGNAL(clicked()), SLOT(enter())); |
186 | 186 | ||
187 | helpBtn = new QPushButton( this ); | 187 | helpBtn = new QPushButton( this ); |
188 | helpBtn->setFocusPolicy( NoFocus ); | 188 | helpBtn->setFocusPolicy( NoFocus ); |
189 | helpBtn->setPixmap( QPixmap( (const char **)help_xpm ) ); | 189 | helpBtn->setPixmap( QPixmap( (const char **)help_xpm ) ); |
190 | helpBtn->setFixedHeight(bh); | 190 | helpBtn->setFixedHeight(bh); |
191 | gl->addWidget( helpBtn, 3, 1 ); | 191 | gl->addWidget( helpBtn, 3, 1 ); |
192 | connect( helpBtn, SIGNAL(clicked()), SLOT(help())); | 192 | connect( helpBtn, SIGNAL(clicked()), SLOT(help())); |
193 | 193 | ||
194 | QPixmap pm( (const char **)pen_xpm ); | 194 | QPixmap pm( (const char **)pen_xpm ); |
195 | setupBtn = new QPushButton( this ); | 195 | setupBtn = new QPushButton( this ); |
196 | setupBtn->setFocusPolicy( NoFocus ); | 196 | setupBtn->setFocusPolicy( NoFocus ); |
197 | setupBtn->setPixmap( pm ); | 197 | setupBtn->setPixmap( pm ); |
198 | setupBtn->setFixedHeight(bh); | 198 | setupBtn->setFixedHeight(bh); |
199 | gl->addWidget( setupBtn, 4, 1 ); | 199 | gl->addWidget( setupBtn, 4, 1 ); |
200 | connect( setupBtn, SIGNAL(clicked()), SLOT(setup())); | 200 | connect( setupBtn, SIGNAL(clicked()), SLOT(setup())); |
201 | 201 | ||
202 | connect( matcher, SIGNAL(removeStroke()), pw, SLOT(removeStroke()) ); | 202 | connect( matcher, SIGNAL(removeStroke()), pw, SLOT(removeStroke()) ); |
203 | connect( pw, SIGNAL(changeCharSet( QIMPenCharSet * )), | 203 | connect( pw, SIGNAL(changeCharSet(QIMPenCharSet*)), |
204 | matcher, SLOT(setCharSet( QIMPenCharSet * )) ); | 204 | matcher, SLOT(setCharSet(QIMPenCharSet*)) ); |
205 | connect( pw, SIGNAL(changeCharSet( int )), | 205 | connect( pw, SIGNAL(changeCharSet(int)), |
206 | this, SLOT(selectCharSet( int )) ); | 206 | this, SLOT(selectCharSet(int)) ); |
207 | connect( pw, SIGNAL(beginStroke()), | 207 | connect( pw, SIGNAL(beginStroke()), |
208 | matcher, SLOT(beginStroke()) ); | 208 | matcher, SLOT(beginStroke()) ); |
209 | connect( pw, SIGNAL(stroke( QIMPenStroke * )), | 209 | connect( pw, SIGNAL(stroke(QIMPenStroke*)), |
210 | this, SLOT(strokeEntered( QIMPenStroke * )) ); | 210 | this, SLOT(strokeEntered(QIMPenStroke*)) ); |
211 | connect( pw, SIGNAL(stroke( QIMPenStroke * )), | 211 | connect( pw, SIGNAL(stroke(QIMPenStroke*)), |
212 | matcher, SLOT(strokeEntered( QIMPenStroke * )) ); | 212 | matcher, SLOT(strokeEntered(QIMPenStroke*)) ); |
213 | 213 | ||
214 | shortcutCharSet = 0; | 214 | shortcutCharSet = 0; |
215 | currCharSet = 0; | 215 | currCharSet = 0; |
216 | setupDlg = 0; | 216 | setupDlg = 0; |
217 | profile = 0; | 217 | profile = 0; |
218 | mode = Normal; | 218 | mode = Normal; |
219 | 219 | ||
220 | loadProfiles(); | 220 | loadProfiles(); |
221 | } | 221 | } |
222 | 222 | ||
223 | QIMPenInput::~QIMPenInput() | 223 | QIMPenInput::~QIMPenInput() |
224 | { | 224 | { |
225 | delete (HandwritingHelp*) helpDlg; | 225 | delete (HandwritingHelp*) helpDlg; |
226 | } | 226 | } |
227 | 227 | ||
228 | QSize QIMPenInput::sizeHint() const | 228 | QSize QIMPenInput::sizeHint() const |
229 | { | 229 | { |
230 | int fw = frameWidth(); | 230 | int fw = frameWidth(); |
231 | int ps = wordPicker->isHidden() ? 0 : wordPicker->sizeHint().height(); | 231 | int ps = wordPicker->isHidden() ? 0 : wordPicker->sizeHint().height(); |
232 | return pw->sizeHint() + QSize( fw*2, fw*2+ps ); | 232 | return pw->sizeHint() + QSize( fw*2, fw*2+ps ); |
233 | } | 233 | } |
234 | 234 | ||
235 | void QIMPenInput::loadProfiles() | 235 | void QIMPenInput::loadProfiles() |
236 | { | 236 | { |
237 | profileList.clear(); | 237 | profileList.clear(); |
238 | profile = 0; | 238 | profile = 0; |
239 | delete shortcutCharSet; | 239 | delete shortcutCharSet; |
240 | shortcutCharSet = new QIMPenCharSet(); | 240 | shortcutCharSet = new QIMPenCharSet(); |
241 | shortcutCharSet->setTitle( tr("Shortcut") ); | 241 | shortcutCharSet->setTitle( tr("Shortcut") ); |
242 | QString path = QPEApplication::qpeDir() + "etc/qimpen"; | 242 | QString path = QPEApplication::qpeDir() + "etc/qimpen"; |
243 | QDir dir( path, "*.conf" ); | 243 | QDir dir( path, "*.conf" ); |
244 | QStringList list = dir.entryList(); | 244 | QStringList list = dir.entryList(); |
245 | QStringList::Iterator it; | 245 | QStringList::Iterator it; |
246 | for ( it = list.begin(); it != list.end(); ++it ) { | 246 | for ( it = list.begin(); it != list.end(); ++it ) { |
247 | QIMPenProfile *p = new QIMPenProfile( path + "/" + *it ); | 247 | QIMPenProfile *p = new QIMPenProfile( path + "/" + *it ); |
248 | profileList.append( p ); | 248 | profileList.append( p ); |
249 | if ( p->shortcut() ) { | 249 | if ( p->shortcut() ) { |
250 | QIMPenCharIterator it( p->shortcut()->characters() ); | 250 | QIMPenCharIterator it( p->shortcut()->characters() ); |
251 | for ( ; it.current(); ++it ) { | 251 | for ( ; it.current(); ++it ) { |
252 | shortcutCharSet->addChar( new QIMPenChar(*it.current()) ); | 252 | shortcutCharSet->addChar( new QIMPenChar(*it.current()) ); |
253 | } | 253 | } |
254 | } | 254 | } |
255 | } | 255 | } |
256 | 256 | ||
257 | Config config( "handwriting" ); | 257 | Config config( "handwriting" ); |
258 | config.setGroup( "Settings" ); | 258 | config.setGroup( "Settings" ); |
259 | QString prof = config.readEntry( "Profile", "Default" ); | 259 | QString prof = config.readEntry( "Profile", "Default" ); |
260 | selectProfile( prof ); | 260 | selectProfile( prof ); |
261 | } | 261 | } |
262 | 262 | ||
263 | void QIMPenInput::selectProfile( const QString &name ) | 263 | void QIMPenInput::selectProfile( const QString &name ) |
264 | { | 264 | { |
265 | QListIterator<QIMPenProfile> it( profileList ); | 265 | QListIterator<QIMPenProfile> it( profileList ); |
266 | for ( ; it.current(); ++it ) { | 266 | for ( ; it.current(); ++it ) { |
267 | if ( it.current()->name() == name ) { | 267 | if ( it.current()->name() == name ) { |
268 | profile = it.current(); | 268 | profile = it.current(); |
269 | break; | 269 | break; |
270 | } | 270 | } |
271 | } | 271 | } |
272 | 272 | ||
273 | if ( !it.current() ) | 273 | if ( !it.current() ) |
274 | return; | 274 | return; |
275 | 275 | ||
276 | pw->clearCharSets(); | 276 | pw->clearCharSets(); |
277 | baseSets.clear(); | 277 | baseSets.clear(); |
278 | 278 | ||
279 | matcher->setMultiStrokeTimeout( profile->multiStrokeTimeout() ); | 279 | matcher->setMultiStrokeTimeout( profile->multiStrokeTimeout() ); |
280 | matcher->setWordMatchingEnabled( profile->matchWords() ); | 280 | matcher->setWordMatchingEnabled( profile->matchWords() ); |
281 | 281 | ||
282 | if ( !Global::fixedDawg().root() || !matcher->isWordMatchingEnabled() ) | 282 | if ( !Global::fixedDawg().root() || !matcher->isWordMatchingEnabled() ) |
283 | wordPicker->hide(); | 283 | wordPicker->hide(); |
284 | else | 284 | else |
285 | wordPicker->show(); | 285 | wordPicker->show(); |
286 | 286 | ||
287 | if ( profile->uppercase() && profile->style() == QIMPenProfile::BothCases ) { | 287 | if ( profile->uppercase() && profile->style() == QIMPenProfile::BothCases ) { |
288 | baseSets.append( profile->uppercase() ); | 288 | baseSets.append( profile->uppercase() ); |
289 | pw->insertCharSet( profile->uppercase() ); | 289 | pw->insertCharSet( profile->uppercase() ); |
290 | } | 290 | } |
291 | 291 | ||
292 | if ( profile->lowercase() ) { | 292 | if ( profile->lowercase() ) { |
293 | baseSets.append( profile->lowercase() ); | 293 | baseSets.append( profile->lowercase() ); |
294 | pw->insertCharSet( profile->lowercase(), profile->style() == QIMPenProfile::BothCases ? 1 : 2 ); | 294 | pw->insertCharSet( profile->lowercase(), profile->style() == QIMPenProfile::BothCases ? 1 : 2 ); |
295 | } | 295 | } |
296 | 296 | ||
297 | if ( profile->numeric() ) { | 297 | if ( profile->numeric() ) { |
298 | baseSets.append( profile->numeric() ); | 298 | baseSets.append( profile->numeric() ); |
299 | pw->insertCharSet( profile->numeric() ); | 299 | pw->insertCharSet( profile->numeric() ); |
300 | } | 300 | } |
301 | 301 | ||
302 | if ( helpDlg ) | 302 | if ( helpDlg ) |
303 | delete (HandwritingHelp*) helpDlg; | 303 | delete (HandwritingHelp*) helpDlg; |
304 | } | 304 | } |
305 | 305 | ||
306 | void QIMPenInput::wordPicked( const QString &w ) | 306 | void QIMPenInput::wordPicked( const QString &w ) |
307 | { | 307 | { |
308 | int bs = matcher->word().length(); | 308 | int bs = matcher->word().length(); |
diff --git a/inputmethods/handwriting/qimpensetup.cpp b/inputmethods/handwriting/qimpensetup.cpp index d0f9ffd..d1297a9 100644 --- a/inputmethods/handwriting/qimpensetup.cpp +++ b/inputmethods/handwriting/qimpensetup.cpp | |||
@@ -8,433 +8,433 @@ | |||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "qimpenwidget.h" | 21 | #include "qimpenwidget.h" |
22 | #include "qimpenprefbase.h" | 22 | #include "qimpenprefbase.h" |
23 | #include "qimpensetup.h" | 23 | #include "qimpensetup.h" |
24 | 24 | ||
25 | #include <qpe/qpeapplication.h> | 25 | #include <qpe/qpeapplication.h> |
26 | #include <qpe/config.h> | 26 | #include <qpe/config.h> |
27 | 27 | ||
28 | #include <qcombobox.h> | 28 | #include <qcombobox.h> |
29 | #include <qlistbox.h> | 29 | #include <qlistbox.h> |
30 | #include <qlabel.h> | 30 | #include <qlabel.h> |
31 | #include <qpushbutton.h> | 31 | #include <qpushbutton.h> |
32 | #include <qlayout.h> | 32 | #include <qlayout.h> |
33 | #include <qpixmap.h> | 33 | #include <qpixmap.h> |
34 | #include <qbuttongroup.h> | 34 | #include <qbuttongroup.h> |
35 | #include <qslider.h> | 35 | #include <qslider.h> |
36 | #include <qtabwidget.h> | 36 | #include <qtabwidget.h> |
37 | #include <qdir.h> | 37 | #include <qdir.h> |
38 | #include <qmessagebox.h> | 38 | #include <qmessagebox.h> |
39 | 39 | ||
40 | 40 | ||
41 | /* XPM */ | 41 | /* XPM */ |
42 | static const char * const left_xpm[] = { | 42 | static const char * const left_xpm[] = { |
43 | "16 16 2 1", | 43 | "16 16 2 1", |
44 | " c None", | 44 | " c None", |
45 | ".c #000000", | 45 | ".c #000000", |
46 | " ", | 46 | " ", |
47 | " ", | 47 | " ", |
48 | " ", | 48 | " ", |
49 | " . ", | 49 | " . ", |
50 | " .. ", | 50 | " .. ", |
51 | " ... ", | 51 | " ... ", |
52 | " .... ", | 52 | " .... ", |
53 | " ..... ", | 53 | " ..... ", |
54 | " ...... ", | 54 | " ...... ", |
55 | " ..... ", | 55 | " ..... ", |
56 | " .... ", | 56 | " .... ", |
57 | " ... ", | 57 | " ... ", |
58 | " .. ", | 58 | " .. ", |
59 | " . ", | 59 | " . ", |
60 | " ", | 60 | " ", |
61 | " "}; | 61 | " "}; |
62 | 62 | ||
63 | 63 | ||
64 | /* XPM */ | 64 | /* XPM */ |
65 | static const char * const right_xpm[] = { | 65 | static const char * const right_xpm[] = { |
66 | "16 16 2 1", | 66 | "16 16 2 1", |
67 | " c None", | 67 | " c None", |
68 | ".c #000000", | 68 | ".c #000000", |
69 | " ", | 69 | " ", |
70 | " ", | 70 | " ", |
71 | " ", | 71 | " ", |
72 | " . ", | 72 | " . ", |
73 | " .. ", | 73 | " .. ", |
74 | " ... ", | 74 | " ... ", |
75 | " .... ", | 75 | " .... ", |
76 | " ..... ", | 76 | " ..... ", |
77 | " ...... ", | 77 | " ...... ", |
78 | " ..... ", | 78 | " ..... ", |
79 | " .... ", | 79 | " .... ", |
80 | " ... ", | 80 | " ... ", |
81 | " .. ", | 81 | " .. ", |
82 | " . ", | 82 | " . ", |
83 | " ", | 83 | " ", |
84 | " "}; | 84 | " "}; |
85 | 85 | ||
86 | 86 | ||
87 | 87 | ||
88 | QIMPenSetup::QIMPenSetup( QIMPenProfile *p, QWidget *parent, | 88 | QIMPenSetup::QIMPenSetup( QIMPenProfile *p, QWidget *parent, |
89 | const char *name, bool modal, int WFlags ) | 89 | const char *name, bool modal, int WFlags ) |
90 | : QDialog( parent, name, modal, WFlags ), profileCombo(0), profile(p) | 90 | : QDialog( parent, name, modal, WFlags ), profileCombo(0), profile(p) |
91 | { | 91 | { |
92 | setCaption( tr("Setup Handwriting Input") ); | 92 | setCaption( tr("Setup Handwriting Input") ); |
93 | 93 | ||
94 | QVBoxLayout *vb = new QVBoxLayout( this ); | 94 | QVBoxLayout *vb = new QVBoxLayout( this ); |
95 | 95 | ||
96 | #define MULTIPROFILE | 96 | #define MULTIPROFILE |
97 | #ifdef MULTIPROFILE | 97 | #ifdef MULTIPROFILE |
98 | profileList.setAutoDelete( true ); | 98 | profileList.setAutoDelete( true ); |
99 | QHBoxLayout *hb = new QHBoxLayout( vb ); | 99 | QHBoxLayout *hb = new QHBoxLayout( vb ); |
100 | hb->setMargin( 6 ); | 100 | hb->setMargin( 6 ); |
101 | QLabel *l = new QLabel( tr("Character Profile:"), this ); | 101 | QLabel *l = new QLabel( tr("Character Profile:"), this ); |
102 | hb->addWidget( l ); | 102 | hb->addWidget( l ); |
103 | profileCombo = new QComboBox( this ); | 103 | profileCombo = new QComboBox( this ); |
104 | connect( profileCombo, SIGNAL(activated(const QString &)), | 104 | connect( profileCombo, SIGNAL(activated(const QString&)), |
105 | this, SLOT(selectProfile(const QString &)) ); | 105 | this, SLOT(selectProfile(const QString&)) ); |
106 | hb->addWidget( profileCombo ); | 106 | hb->addWidget( profileCombo ); |
107 | #else | 107 | #else |
108 | profileList.append( profile ); | 108 | profileList.append( profile ); |
109 | #endif | 109 | #endif |
110 | 110 | ||
111 | qWarning("profiles: %d", profileList.count()); | 111 | qWarning("profiles: %d", profileList.count()); |
112 | 112 | ||
113 | QTabWidget *tw = new QTabWidget( this ); | 113 | QTabWidget *tw = new QTabWidget( this ); |
114 | vb->addWidget( tw ); | 114 | vb->addWidget( tw ); |
115 | 115 | ||
116 | pref = new QIMPenPrefBase( this ); | 116 | pref = new QIMPenPrefBase( this ); |
117 | tw->addTab( pref, tr("Preferences") ); | 117 | tw->addTab( pref, tr("Preferences") ); |
118 | 118 | ||
119 | pref->inputStyle->setExclusive( TRUE ); | 119 | pref->inputStyle->setExclusive( TRUE ); |
120 | 120 | ||
121 | style = profile->style() == QIMPenProfile::ToggleCases ? 1 : 0; | 121 | style = profile->style() == QIMPenProfile::ToggleCases ? 1 : 0; |
122 | pref->inputStyle->setButton( style ); | 122 | pref->inputStyle->setButton( style ); |
123 | connect( pref->inputStyle, SIGNAL(clicked(int)), | 123 | connect( pref->inputStyle, SIGNAL(clicked(int)), |
124 | this, SLOT(styleClicked(int)) ); | 124 | this, SLOT(styleClicked(int)) ); |
125 | pref->inputStyle->setEnabled( profile->canSelectStyle() ); | 125 | pref->inputStyle->setEnabled( profile->canSelectStyle() ); |
126 | 126 | ||
127 | multiTimeout = profile->multiStrokeTimeout(); | 127 | multiTimeout = profile->multiStrokeTimeout(); |
128 | pref->multiStrokeSlider->setValue( multiTimeout ); | 128 | pref->multiStrokeSlider->setValue( multiTimeout ); |
129 | multiTimeoutChanged( multiTimeout ); | 129 | multiTimeoutChanged( multiTimeout ); |
130 | connect( pref->multiStrokeSlider, SIGNAL(valueChanged(int)), | 130 | connect( pref->multiStrokeSlider, SIGNAL(valueChanged(int)), |
131 | this, SLOT(multiTimeoutChanged(int)) ); | 131 | this, SLOT(multiTimeoutChanged(int)) ); |
132 | 132 | ||
133 | edit = new QIMPenEdit( p, tw ); | 133 | edit = new QIMPenEdit( p, tw ); |
134 | tw->addTab( edit, tr("Customize") ); | 134 | tw->addTab( edit, tr("Customize") ); |
135 | #ifdef MULTIPROFILE | 135 | #ifdef MULTIPROFILE |
136 | loadProfiles(); | 136 | loadProfiles(); |
137 | #endif | 137 | #endif |
138 | 138 | ||
139 | } | 139 | } |
140 | 140 | ||
141 | void QIMPenSetup::loadProfiles() | 141 | void QIMPenSetup::loadProfiles() |
142 | { | 142 | { |
143 | QString path = QPEApplication::qpeDir() + "etc/qimpen"; | 143 | QString path = QPEApplication::qpeDir() + "etc/qimpen"; |
144 | QDir dir( path, "*.conf" ); | 144 | QDir dir( path, "*.conf" ); |
145 | QStringList list = dir.entryList(); | 145 | QStringList list = dir.entryList(); |
146 | QStringList::Iterator it; | 146 | QStringList::Iterator it; |
147 | for ( it = list.begin(); it != list.end(); ++it ) { | 147 | for ( it = list.begin(); it != list.end(); ++it ) { |
148 | QIMPenProfile *p = new QIMPenProfile( path + "/" + *it ); | 148 | QIMPenProfile *p = new QIMPenProfile( path + "/" + *it ); |
149 | profileList.append( p ); | 149 | profileList.append( p ); |
150 | profileCombo->insertItem( p->name() ); | 150 | profileCombo->insertItem( p->name() ); |
151 | if ( p->name() == profile->name() ) { | 151 | if ( p->name() == profile->name() ) { |
152 | profileCombo->setCurrentItem( profileCombo->count()-1 ); | 152 | profileCombo->setCurrentItem( profileCombo->count()-1 ); |
153 | profile = p; | 153 | profile = p; |
154 | edit->setProfile( profile ); | 154 | edit->setProfile( profile ); |
155 | } | 155 | } |
156 | } | 156 | } |
157 | } | 157 | } |
158 | 158 | ||
159 | void QIMPenSetup::styleClicked( int id ) | 159 | void QIMPenSetup::styleClicked( int id ) |
160 | { | 160 | { |
161 | style = id; | 161 | style = id; |
162 | } | 162 | } |
163 | 163 | ||
164 | void QIMPenSetup::multiTimeoutChanged( int v ) | 164 | void QIMPenSetup::multiTimeoutChanged( int v ) |
165 | { | 165 | { |
166 | multiTimeout = v; | 166 | multiTimeout = v; |
167 | pref->multiStrokeLabel->setText( tr("%1 ms").arg(v) ); | 167 | pref->multiStrokeLabel->setText( tr("%1 ms").arg(v) ); |
168 | } | 168 | } |
169 | 169 | ||
170 | void QIMPenSetup::selectProfile( const QString &p ) | 170 | void QIMPenSetup::selectProfile( const QString &p ) |
171 | { | 171 | { |
172 | if ( p == profile->name() ) | 172 | if ( p == profile->name() ) |
173 | return; | 173 | return; |
174 | 174 | ||
175 | profile->setStyle( style ? QIMPenProfile::ToggleCases : QIMPenProfile::BothCases ); | 175 | profile->setStyle( style ? QIMPenProfile::ToggleCases : QIMPenProfile::BothCases ); |
176 | profile->setMultiStrokeTimeout( multiTimeout ); | 176 | profile->setMultiStrokeTimeout( multiTimeout ); |
177 | 177 | ||
178 | for ( int i = 0; i < (int)profileList.count(); i++ ) { | 178 | for ( int i = 0; i < (int)profileList.count(); i++ ) { |
179 | if ( profileList.at(i)->name() == p ) { | 179 | if ( profileList.at(i)->name() == p ) { |
180 | profile = profileList.at(i); | 180 | profile = profileList.at(i); |
181 | style = profile->style() == QIMPenProfile::ToggleCases ? 1 : 0; | 181 | style = profile->style() == QIMPenProfile::ToggleCases ? 1 : 0; |
182 | pref->inputStyle->setButton( style ); | 182 | pref->inputStyle->setButton( style ); |
183 | pref->inputStyle->setEnabled( profile->canSelectStyle() ); | 183 | pref->inputStyle->setEnabled( profile->canSelectStyle() ); |
184 | multiTimeout = profile->multiStrokeTimeout(); | 184 | multiTimeout = profile->multiStrokeTimeout(); |
185 | pref->multiStrokeSlider->setValue( multiTimeout ); | 185 | pref->multiStrokeSlider->setValue( multiTimeout ); |
186 | multiTimeoutChanged( multiTimeout ); | 186 | multiTimeoutChanged( multiTimeout ); |
187 | edit->setProfile( profile ); | 187 | edit->setProfile( profile ); |
188 | break; | 188 | break; |
189 | } | 189 | } |
190 | } | 190 | } |
191 | } | 191 | } |
192 | 192 | ||
193 | void QIMPenSetup::accept() | 193 | void QIMPenSetup::accept() |
194 | { | 194 | { |
195 | profile->setStyle( style ? QIMPenProfile::ToggleCases : QIMPenProfile::BothCases ); | 195 | profile->setStyle( style ? QIMPenProfile::ToggleCases : QIMPenProfile::BothCases ); |
196 | profile->setMultiStrokeTimeout( multiTimeout ); | 196 | profile->setMultiStrokeTimeout( multiTimeout ); |
197 | // Save current profile | 197 | // Save current profile |
198 | if ( profileCombo ) { | 198 | if ( profileCombo ) { |
199 | Config config( "handwriting" ); | 199 | Config config( "handwriting" ); |
200 | config.setGroup( "Settings" ); | 200 | config.setGroup( "Settings" ); |
201 | config.writeEntry( "Profile", profileCombo->currentText() ); | 201 | config.writeEntry( "Profile", profileCombo->currentText() ); |
202 | } | 202 | } |
203 | // Save charsets | 203 | // Save charsets |
204 | bool ok = TRUE; | 204 | bool ok = TRUE; |
205 | for ( int i = 0; i < (int)profileList.count(); i++ ) { | 205 | for ( int i = 0; i < (int)profileList.count(); i++ ) { |
206 | QIMPenProfile *prof = profileList.at(i); | 206 | QIMPenProfile *prof = profileList.at(i); |
207 | QIMPenCharSetIterator it(prof->charSets()); | 207 | QIMPenCharSetIterator it(prof->charSets()); |
208 | for ( ; it.current(); ++it ) { | 208 | for ( ; it.current(); ++it ) { |
209 | if ( !(it.current()->save( QIMPenCharSet::User )) ) { | 209 | if ( !(it.current()->save( QIMPenCharSet::User )) ) { |
210 | ok = FALSE; | 210 | ok = FALSE; |
211 | break; | 211 | break; |
212 | } | 212 | } |
213 | } | 213 | } |
214 | } | 214 | } |
215 | if ( !ok ) { | 215 | if ( !ok ) { |
216 | if ( QMessageBox::critical( 0, tr( "Out of space" ), | 216 | if ( QMessageBox::critical( 0, tr( "Out of space" ), |
217 | tr("Unable to save information.\n" | 217 | tr("Unable to save information.\n" |
218 | "Free up some space\n" | 218 | "Free up some space\n" |
219 | "and try again.\n" | 219 | "and try again.\n" |
220 | "\nQuit anyway?"), | 220 | "\nQuit anyway?"), |
221 | QMessageBox::Yes|QMessageBox::Escape, | 221 | QMessageBox::Yes|QMessageBox::Escape, |
222 | QMessageBox::No|QMessageBox::Default ) | 222 | QMessageBox::No|QMessageBox::Default ) |
223 | != QMessageBox::No ) { | 223 | != QMessageBox::No ) { |
224 | QDialog::accept(); | 224 | QDialog::accept(); |
225 | } | 225 | } |
226 | } else { | 226 | } else { |
227 | QDialog::accept(); | 227 | QDialog::accept(); |
228 | } | 228 | } |
229 | } | 229 | } |
230 | 230 | ||
231 | //--------------------------------------------------------------------------- | 231 | //--------------------------------------------------------------------------- |
232 | 232 | ||
233 | QIMPenInputCharDlg::QIMPenInputCharDlg( QWidget *parent, const char *name, | 233 | QIMPenInputCharDlg::QIMPenInputCharDlg( QWidget *parent, const char *name, |
234 | bool modal, int WFlags) | 234 | bool modal, int WFlags) |
235 | : QDialog( parent, name, modal, WFlags ) | 235 | : QDialog( parent, name, modal, WFlags ) |
236 | { | 236 | { |
237 | setCaption( tr("Enter new character") ); | 237 | setCaption( tr("Enter new character") ); |
238 | uni = 0; | 238 | uni = 0; |
239 | 239 | ||
240 | QVBoxLayout *vb = new QVBoxLayout( this, 10 ); | 240 | QVBoxLayout *vb = new QVBoxLayout( this, 10 ); |
241 | 241 | ||
242 | QHBoxLayout *hb = new QHBoxLayout(); | 242 | QHBoxLayout *hb = new QHBoxLayout(); |
243 | vb->addLayout( hb ); | 243 | vb->addLayout( hb ); |
244 | 244 | ||
245 | QLabel *label = new QLabel( tr("Character:"), this ); | 245 | QLabel *label = new QLabel( tr("Character:"), this ); |
246 | hb->addWidget( label ); | 246 | hb->addWidget( label ); |
247 | 247 | ||
248 | QComboBox *cb = new QComboBox( TRUE, this ); | 248 | QComboBox *cb = new QComboBox( TRUE, this ); |
249 | connect( cb, SIGNAL(activated(int)), SLOT(setSpecial(int)) ); | 249 | connect( cb, SIGNAL(activated(int)), SLOT(setSpecial(int)) ); |
250 | connect( cb, SIGNAL(textChanged(const QString &)), | 250 | connect( cb, SIGNAL(textChanged(const QString&)), |
251 | SLOT(setCharacter(const QString &)) ); | 251 | SLOT(setCharacter(const QString&)) ); |
252 | addSpecial( cb ); | 252 | addSpecial( cb ); |
253 | cb->setEditText( "" ); | 253 | cb->setEditText( "" ); |
254 | hb->addWidget( cb ); | 254 | hb->addWidget( cb ); |
255 | 255 | ||
256 | hb = new QHBoxLayout(); | 256 | hb = new QHBoxLayout(); |
257 | vb->addLayout( hb ); | 257 | vb->addLayout( hb ); |
258 | 258 | ||
259 | QPushButton *pb = new QPushButton( "OK", this ); | 259 | QPushButton *pb = new QPushButton( "OK", this ); |
260 | connect( pb, SIGNAL(clicked()), SLOT(accept())); | 260 | connect( pb, SIGNAL(clicked()), SLOT(accept())); |
261 | hb->addWidget( pb ); | 261 | hb->addWidget( pb ); |
262 | pb = new QPushButton( "Cancel", this ); | 262 | pb = new QPushButton( "Cancel", this ); |
263 | connect( pb, SIGNAL(clicked()), SLOT(reject())); | 263 | connect( pb, SIGNAL(clicked()), SLOT(reject())); |
264 | hb->addWidget( pb ); | 264 | hb->addWidget( pb ); |
265 | 265 | ||
266 | cb->setFocus(); | 266 | cb->setFocus(); |
267 | } | 267 | } |
268 | 268 | ||
269 | void QIMPenInputCharDlg::addSpecial( QComboBox *cb ) | 269 | void QIMPenInputCharDlg::addSpecial( QComboBox *cb ) |
270 | { | 270 | { |
271 | int i = 0; | 271 | int i = 0; |
272 | while ( qimpen_specialKeys[i].code != Key_unknown ) { | 272 | while ( qimpen_specialKeys[i].code != Key_unknown ) { |
273 | cb->insertItem( qimpen_specialKeys[i].name ); | 273 | cb->insertItem( qimpen_specialKeys[i].name ); |
274 | i++; | 274 | i++; |
275 | } | 275 | } |
276 | } | 276 | } |
277 | 277 | ||
278 | void QIMPenInputCharDlg::setSpecial( int sp ) | 278 | void QIMPenInputCharDlg::setSpecial( int sp ) |
279 | { | 279 | { |
280 | uni = qimpen_specialKeys[sp].code << 16; | 280 | uni = qimpen_specialKeys[sp].code << 16; |
281 | } | 281 | } |
282 | 282 | ||
283 | void QIMPenInputCharDlg::setCharacter( const QString &string ) | 283 | void QIMPenInputCharDlg::setCharacter( const QString &string ) |
284 | { | 284 | { |
285 | uni = string[0].unicode(); | 285 | uni = string[0].unicode(); |
286 | } | 286 | } |
287 | 287 | ||
288 | //--------------------------------------------------------------------------- | 288 | //--------------------------------------------------------------------------- |
289 | 289 | ||
290 | class CharListItem : public QListBoxText | 290 | class CharListItem : public QListBoxText |
291 | { | 291 | { |
292 | public: | 292 | public: |
293 | CharListItem( const QString &text, uint c ) | 293 | CharListItem( const QString &text, uint c ) |
294 | : QListBoxText( text ) | 294 | : QListBoxText( text ) |
295 | { | 295 | { |
296 | _code = c; | 296 | _code = c; |
297 | } | 297 | } |
298 | 298 | ||
299 | uint code() const { return _code; } | 299 | uint code() const { return _code; } |
300 | 300 | ||
301 | protected: | 301 | protected: |
302 | uint _code; | 302 | uint _code; |
303 | }; | 303 | }; |
304 | 304 | ||
305 | /*! | 305 | /*! |
306 | \class QIMPenEdit qimpensetup.h | 306 | \class QIMPenEdit qimpensetup.h |
307 | 307 | ||
308 | Class to allow users to input totally useless character definitions | 308 | Class to allow users to input totally useless character definitions |
309 | which could match any number of the default set. | 309 | which could match any number of the default set. |
310 | */ | 310 | */ |
311 | 311 | ||
312 | QIMPenEdit::QIMPenEdit( QIMPenProfile *p, QWidget *parent, | 312 | QIMPenEdit::QIMPenEdit( QIMPenProfile *p, QWidget *parent, |
313 | const char *name ) | 313 | const char *name ) |
314 | : QWidget( parent, name ), profile(p) | 314 | : QWidget( parent, name ), profile(p) |
315 | { | 315 | { |
316 | currentChar = 0; | 316 | currentChar = 0; |
317 | currentCode = 0; | 317 | currentCode = 0; |
318 | inputChar = new QIMPenChar(); | 318 | inputChar = new QIMPenChar(); |
319 | 319 | ||
320 | QVBoxLayout *tvb = new QVBoxLayout( this, 5 ); | 320 | QVBoxLayout *tvb = new QVBoxLayout( this, 5 ); |
321 | 321 | ||
322 | QGridLayout *gl = new QGridLayout( tvb, 4, 2 ); | 322 | QGridLayout *gl = new QGridLayout( tvb, 4, 2 ); |
323 | gl->setRowStretch( 1, 1 ); | 323 | gl->setRowStretch( 1, 1 ); |
324 | gl->addRowSpacing( 2, 35 ); | 324 | gl->addRowSpacing( 2, 35 ); |
325 | gl->addRowSpacing( 3, 35 ); | 325 | gl->addRowSpacing( 3, 35 ); |
326 | 326 | ||
327 | charSetCombo = new QComboBox( this ); | 327 | charSetCombo = new QComboBox( this ); |
328 | gl->addMultiCellWidget( charSetCombo, 0, 0, 0, 1 ); | 328 | gl->addMultiCellWidget( charSetCombo, 0, 0, 0, 1 ); |
329 | connect( charSetCombo, SIGNAL(activated(int)), SLOT(selectCharSet(int))); | 329 | connect( charSetCombo, SIGNAL(activated(int)), SLOT(selectCharSet(int))); |
330 | QIMPenCharSetIterator it( profile->charSets() ); | 330 | QIMPenCharSetIterator it( profile->charSets() ); |
331 | for ( ; it.current(); ++it ) { | 331 | for ( ; it.current(); ++it ) { |
332 | charSetCombo->insertItem( it.current()->description() ); | 332 | charSetCombo->insertItem( it.current()->description() ); |
333 | } | 333 | } |
334 | 334 | ||
335 | charList = new QListBox( this ); | 335 | charList = new QListBox( this ); |
336 | charList->setMinimumHeight( charList->sizeHint().height() ); | 336 | charList->setMinimumHeight( charList->sizeHint().height() ); |
337 | connect( charList, SIGNAL(highlighted(int)), SLOT(selectChar(int)) ); | 337 | connect( charList, SIGNAL(highlighted(int)), SLOT(selectChar(int)) ); |
338 | gl->addWidget( charList, 1, 0 ); | 338 | gl->addWidget( charList, 1, 0 ); |
339 | 339 | ||
340 | pw = new QIMPenWidget( this ); | 340 | pw = new QIMPenWidget( this ); |
341 | pw->setFixedHeight( 75 ); | 341 | pw->setFixedHeight( 75 ); |
342 | gl->addMultiCellWidget( pw, 2, 3, 0, 0 ); | 342 | gl->addMultiCellWidget( pw, 2, 3, 0, 0 ); |
343 | connect( pw, SIGNAL(stroke(QIMPenStroke *)), | 343 | connect( pw, SIGNAL(stroke(QIMPenStroke*)), |
344 | SLOT(newStroke(QIMPenStroke *)) ); | 344 | SLOT(newStroke(QIMPenStroke*)) ); |
345 | 345 | ||
346 | QVBoxLayout *vb = new QVBoxLayout(); | 346 | QVBoxLayout *vb = new QVBoxLayout(); |
347 | gl->addLayout( vb, 1, 1 ); | 347 | gl->addLayout( vb, 1, 1 ); |
348 | newBtn = new QPushButton( tr("New..."), this ); | 348 | newBtn = new QPushButton( tr("New..."), this ); |
349 | connect( newBtn, SIGNAL(clicked()), SLOT(addNewChar()) ); | 349 | connect( newBtn, SIGNAL(clicked()), SLOT(addNewChar()) ); |
350 | vb->addWidget( newBtn ); | 350 | vb->addWidget( newBtn ); |
351 | 351 | ||
352 | addBtn = new QPushButton( tr("Add"), this ); | 352 | addBtn = new QPushButton( tr("Add"), this ); |
353 | connect( addBtn, SIGNAL(clicked()), SLOT(addChar()) ); | 353 | connect( addBtn, SIGNAL(clicked()), SLOT(addChar()) ); |
354 | vb->addWidget( addBtn ); | 354 | vb->addWidget( addBtn ); |
355 | 355 | ||
356 | removeBtn = new QPushButton( tr("Remove"), this ); | 356 | removeBtn = new QPushButton( tr("Remove"), this ); |
357 | connect( removeBtn, SIGNAL(clicked()), SLOT(removeChar()) ); | 357 | connect( removeBtn, SIGNAL(clicked()), SLOT(removeChar()) ); |
358 | vb->addWidget( removeBtn ); | 358 | vb->addWidget( removeBtn ); |
359 | 359 | ||
360 | QPushButton *pb = new QPushButton( tr("Default"), this ); | 360 | QPushButton *pb = new QPushButton( tr("Default"), this ); |
361 | connect( pb, SIGNAL(clicked()), SLOT(defaultChars()) ); | 361 | connect( pb, SIGNAL(clicked()), SLOT(defaultChars()) ); |
362 | vb->addWidget( pb ); | 362 | vb->addWidget( pb ); |
363 | 363 | ||
364 | QHBoxLayout *hb = new QHBoxLayout(); | 364 | QHBoxLayout *hb = new QHBoxLayout(); |
365 | gl->addLayout( hb, 2, 1 ); | 365 | gl->addLayout( hb, 2, 1 ); |
366 | prevBtn = new QPushButton( this ); | 366 | prevBtn = new QPushButton( this ); |
367 | prevBtn->setPixmap( QPixmap( (const char **)left_xpm ) ); | 367 | prevBtn->setPixmap( QPixmap( (const char **)left_xpm ) ); |
368 | connect( prevBtn, SIGNAL(clicked()), SLOT(prevChar())); | 368 | connect( prevBtn, SIGNAL(clicked()), SLOT(prevChar())); |
369 | hb->addWidget( prevBtn ); | 369 | hb->addWidget( prevBtn ); |
370 | 370 | ||
371 | nextBtn = new QPushButton( this ); | 371 | nextBtn = new QPushButton( this ); |
372 | nextBtn->setPixmap( QPixmap( (const char **)right_xpm ) ); | 372 | nextBtn->setPixmap( QPixmap( (const char **)right_xpm ) ); |
373 | connect( nextBtn, SIGNAL(clicked()), SLOT(nextChar())); | 373 | connect( nextBtn, SIGNAL(clicked()), SLOT(nextChar())); |
374 | hb->addWidget( nextBtn ); | 374 | hb->addWidget( nextBtn ); |
375 | 375 | ||
376 | pb = new QPushButton( tr("Clear"), this ); | 376 | pb = new QPushButton( tr("Clear"), this ); |
377 | connect( pb, SIGNAL(clicked()), SLOT(clearChar()) ); | 377 | connect( pb, SIGNAL(clicked()), SLOT(clearChar()) ); |
378 | gl->addWidget( pb, 3, 1 ); | 378 | gl->addWidget( pb, 3, 1 ); |
379 | 379 | ||
380 | //-- | 380 | //-- |
381 | #if !defined(Q_WS_QWS) | 381 | #if !defined(Q_WS_QWS) |
382 | hb = new QHBoxLayout( tvb ); | 382 | hb = new QHBoxLayout( tvb ); |
383 | pb = new QPushButton( tr("OK"), this ); | 383 | pb = new QPushButton( tr("OK"), this ); |
384 | connect( pb, SIGNAL(clicked()), SLOT(accept()) ); | 384 | connect( pb, SIGNAL(clicked()), SLOT(accept()) ); |
385 | hb->addWidget( pb ); | 385 | hb->addWidget( pb ); |
386 | 386 | ||
387 | pb = new QPushButton( tr("Cancel"), this ); | 387 | pb = new QPushButton( tr("Cancel"), this ); |
388 | connect( pb, SIGNAL(clicked()), SLOT(reject()) ); | 388 | connect( pb, SIGNAL(clicked()), SLOT(reject()) ); |
389 | hb->addWidget( pb ); | 389 | hb->addWidget( pb ); |
390 | #endif | 390 | #endif |
391 | selectCharSet( 0 ); | 391 | selectCharSet( 0 ); |
392 | charList->setFocus(); | 392 | charList->setFocus(); |
393 | 393 | ||
394 | resize( minimumSize() ); | 394 | resize( minimumSize() ); |
395 | enableButtons(); | 395 | enableButtons(); |
396 | } | 396 | } |
397 | 397 | ||
398 | void QIMPenEdit::setProfile( QIMPenProfile *p ) | 398 | void QIMPenEdit::setProfile( QIMPenProfile *p ) |
399 | { | 399 | { |
400 | profile = p; | 400 | profile = p; |
401 | charSetCombo->clear(); | 401 | charSetCombo->clear(); |
402 | QIMPenCharSetIterator it( profile->charSets() ); | 402 | QIMPenCharSetIterator it( profile->charSets() ); |
403 | for ( ; it.current(); ++it ) { | 403 | for ( ; it.current(); ++it ) { |
404 | if ( ! it.current()->hidden() ) | 404 | if ( ! it.current()->hidden() ) |
405 | charSetCombo->insertItem( it.current()->description() ); | 405 | charSetCombo->insertItem( it.current()->description() ); |
406 | } | 406 | } |
407 | selectCharSet( 0 ); | 407 | selectCharSet( 0 ); |
408 | charList->setFocus(); | 408 | charList->setFocus(); |
409 | enableButtons(); | 409 | enableButtons(); |
410 | } | 410 | } |
411 | 411 | ||
412 | void QIMPenEdit::selectCharSet( QIMPenCharSet *c ) | 412 | void QIMPenEdit::selectCharSet( QIMPenCharSet *c ) |
413 | { | 413 | { |
414 | int i = 0; | 414 | int i = 0; |
415 | QIMPenCharSetIterator it( profile->charSets() ); | 415 | QIMPenCharSetIterator it( profile->charSets() ); |
416 | for ( ; it.current(); ++it, i++ ) { | 416 | for ( ; it.current(); ++it, i++ ) { |
417 | if ( it.current() == c ) { | 417 | if ( it.current() == c ) { |
418 | charSetCombo->setCurrentItem( i ); | 418 | charSetCombo->setCurrentItem( i ); |
419 | selectCharSet( i ); | 419 | selectCharSet( i ); |
420 | } | 420 | } |
421 | } | 421 | } |
422 | } | 422 | } |
423 | 423 | ||
424 | 424 | ||
425 | /*! | 425 | /*! |
426 | Fill the character list box with the characters. Duplicates are not | 426 | Fill the character list box with the characters. Duplicates are not |
427 | inserted. | 427 | inserted. |
428 | */ | 428 | */ |
429 | void QIMPenEdit::fillCharList() | 429 | void QIMPenEdit::fillCharList() |
430 | { | 430 | { |
431 | charList->clear(); | 431 | charList->clear(); |
432 | QIMPenCharIterator it( currentSet->characters() ); | 432 | QIMPenCharIterator it( currentSet->characters() ); |
433 | CharListItem *li = 0; | 433 | CharListItem *li = 0; |
434 | for ( ; it.current(); ++it ) { | 434 | for ( ; it.current(); ++it ) { |
435 | uint ch = it.current()->character(); | 435 | uint ch = it.current()->character(); |
436 | QString n = it.current()->name(); | 436 | QString n = it.current()->name(); |
437 | if ( !n.isEmpty() ) | 437 | if ( !n.isEmpty() ) |
438 | li = new CharListItem( n, ch ); | 438 | li = new CharListItem( n, ch ); |
439 | if ( li ) { | 439 | if ( li ) { |
440 | CharListItem *i = (CharListItem *)charList->findItem( li->text() ); | 440 | CharListItem *i = (CharListItem *)charList->findItem( li->text() ); |
diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp index aec0ad3..4f4f25f 100644 --- a/inputmethods/multikey/keyboard.cpp +++ b/inputmethods/multikey/keyboard.cpp | |||
@@ -2,194 +2,194 @@ | |||
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "keyboard.h" | 21 | #include "keyboard.h" |
22 | #include "configdlg.h" | 22 | #include "configdlg.h" |
23 | 23 | ||
24 | #include <qpe/global.h> | 24 | #include <qpe/global.h> |
25 | #include <qpe/qcopenvelope_qws.h> | 25 | #include <qpe/qcopenvelope_qws.h> |
26 | 26 | ||
27 | #include <qwindowsystem_qws.h> | 27 | #include <qwindowsystem_qws.h> |
28 | #include <qpainter.h> | 28 | #include <qpainter.h> |
29 | #include <qfontmetrics.h> | 29 | #include <qfontmetrics.h> |
30 | #include <qtimer.h> | 30 | #include <qtimer.h> |
31 | #include <qpe/qpeapplication.h> | 31 | #include <qpe/qpeapplication.h> |
32 | #include <qpe/config.h> | 32 | #include <qpe/config.h> |
33 | #include <ctype.h> | 33 | #include <ctype.h> |
34 | #include <qdir.h> | 34 | #include <qdir.h> |
35 | #include <qtextstream.h> | 35 | #include <qtextstream.h> |
36 | #include <qstringlist.h> | 36 | #include <qstringlist.h> |
37 | 37 | ||
38 | #include <sys/utsname.h> | 38 | #include <sys/utsname.h> |
39 | 39 | ||
40 | using namespace MultiKey; | 40 | using namespace MultiKey; |
41 | 41 | ||
42 | static const char * const kb_config_xpm[] = { | 42 | static const char * const kb_config_xpm[] = { |
43 | "13 7 2 1", | 43 | "13 7 2 1", |
44 | " c None", | 44 | " c None", |
45 | ". c #000000", | 45 | ". c #000000", |
46 | " ", | 46 | " ", |
47 | " . ", | 47 | " . ", |
48 | " ... ", | 48 | " ... ", |
49 | " ..... ", | 49 | " ..... ", |
50 | " . ", | 50 | " . ", |
51 | " . ", | 51 | " . ", |
52 | " "}; | 52 | " "}; |
53 | 53 | ||
54 | /* Keyboard::Keyboard {{{1 */ | 54 | /* Keyboard::Keyboard {{{1 */ |
55 | Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) : | 55 | Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) : |
56 | QFrame(parent, _name, f), shift(0), lock(0), ctrl(0), alt(0), | 56 | QFrame(parent, _name, f), shift(0), lock(0), ctrl(0), alt(0), |
57 | meta(0), circumflex(0), diaeresis(0), baccent(0), accent(0), | 57 | meta(0), circumflex(0), diaeresis(0), baccent(0), accent(0), |
58 | useLargeKeys(TRUE), usePicks(0), useRepeat(0), | 58 | useLargeKeys(TRUE), usePicks(0), useRepeat(0), |
59 | pressedKeyRow(-1), pressedKeyCol(-1), | 59 | pressedKeyRow(-1), pressedKeyCol(-1), |
60 | unicode(-1), qkeycode(0), modifiers(0), schar(0), mchar(0), echar(0), | 60 | unicode(-1), qkeycode(0), modifiers(0), schar(0), mchar(0), echar(0), |
61 | configdlg(0) | 61 | configdlg(0) |
62 | 62 | ||
63 | { | 63 | { |
64 | 64 | ||
65 | // get the default font | 65 | // get the default font |
66 | Config *config = new Config( "qpe" ); | 66 | Config *config = new Config( "qpe" ); |
67 | config->setGroup( "Appearance" ); | 67 | config->setGroup( "Appearance" ); |
68 | QString familyStr = config->readEntry( "FontFamily", "smallsmooth" ); | 68 | QString familyStr = config->readEntry( "FontFamily", "smallsmooth" ); |
69 | delete config; | 69 | delete config; |
70 | 70 | ||
71 | config = new Config("multikey"); | 71 | config = new Config("multikey"); |
72 | config->setGroup ("general"); | 72 | config->setGroup ("general"); |
73 | usePicks = config->readBoolEntry ("usePickboard", 0); // default closed | 73 | usePicks = config->readBoolEntry ("usePickboard", 0); // default closed |
74 | useRepeat = config->readBoolEntry ("useRepeat", 1); | 74 | useRepeat = config->readBoolEntry ("useRepeat", 1); |
75 | delete config; | 75 | delete config; |
76 | 76 | ||
77 | 77 | ||
78 | setFont( QFont( familyStr, 10 ) ); | 78 | setFont( QFont( familyStr, 10 ) ); |
79 | 79 | ||
80 | picks = new KeyboardPicks( this ); | 80 | picks = new KeyboardPicks( this ); |
81 | picks->setFont( QFont( familyStr, 10 ) ); | 81 | picks->setFont( QFont( familyStr, 10 ) ); |
82 | picks->initialise(); | 82 | picks->initialise(); |
83 | if (usePicks) { | 83 | if (usePicks) { |
84 | 84 | ||
85 | QObject::connect( picks, SIGNAL(key(ushort,ushort,ushort,bool,bool) ), | 85 | QObject::connect( picks, SIGNAL(key(ushort,ushort,ushort,bool,bool) ), |
86 | this, SIGNAL(key(ushort,ushort,ushort,bool,bool)) ); | 86 | this, SIGNAL(key(ushort,ushort,ushort,bool,bool)) ); |
87 | 87 | ||
88 | } else picks->hide(); | 88 | } else picks->hide(); |
89 | 89 | ||
90 | loadKeyboardColors(); | 90 | loadKeyboardColors(); |
91 | 91 | ||
92 | keys = new Keys(); | 92 | keys = new Keys(); |
93 | 93 | ||
94 | repeatTimer = new QTimer( this ); | 94 | repeatTimer = new QTimer( this ); |
95 | connect( repeatTimer, SIGNAL(timeout()), this, SLOT(repeat()) ); | 95 | connect( repeatTimer, SIGNAL(timeout()), this, SLOT(repeat()) ); |
96 | 96 | ||
97 | QCopChannel* kbdChannel = new QCopChannel("MultiKey/Keyboard", this); | 97 | QCopChannel* kbdChannel = new QCopChannel("MultiKey/Keyboard", this); |
98 | connect(kbdChannel, SIGNAL(received(const QCString &, const QByteArray &)), | 98 | connect(kbdChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
99 | this, SLOT(receive(const QCString &, const QByteArray &))); | 99 | this, SLOT(receive(const QCString&,const QByteArray&))); |
100 | } | 100 | } |
101 | 101 | ||
102 | Keyboard::~Keyboard() { | 102 | Keyboard::~Keyboard() { |
103 | 103 | ||
104 | if ( configdlg ) { | 104 | if ( configdlg ) { |
105 | delete configdlg; | 105 | delete configdlg; |
106 | configdlg = 0; | 106 | configdlg = 0; |
107 | } | 107 | } |
108 | 108 | ||
109 | } | 109 | } |
110 | 110 | ||
111 | /* Keyboard::resizeEvent {{{1 */ | 111 | /* Keyboard::resizeEvent {{{1 */ |
112 | void Keyboard::resizeEvent(QResizeEvent*) | 112 | void Keyboard::resizeEvent(QResizeEvent*) |
113 | { | 113 | { |
114 | int ph = picks->sizeHint().height(); | 114 | int ph = picks->sizeHint().height(); |
115 | picks->setGeometry( 0, 0, width(), ph ); | 115 | picks->setGeometry( 0, 0, width(), ph ); |
116 | keyHeight = (height()-(usePicks ? ph : 0))/(keys->rows()?keys->rows():1); | 116 | keyHeight = (height()-(usePicks ? ph : 0))/(keys->rows()?keys->rows():1); |
117 | 117 | ||
118 | int nk; // number of keys? | 118 | int nk; // number of keys? |
119 | if ( useLargeKeys ) { | 119 | if ( useLargeKeys ) { |
120 | nk = 15; | 120 | nk = 15; |
121 | } else { | 121 | } else { |
122 | nk = 19; | 122 | nk = 19; |
123 | } | 123 | } |
124 | defaultKeyWidth = (width()/nk)/2; | 124 | defaultKeyWidth = (width()/nk)/2; |
125 | xoffs = (width()-defaultKeyWidth*nk)/2; // empty key spaces? | 125 | xoffs = (width()-defaultKeyWidth*nk)/2; // empty key spaces? |
126 | 126 | ||
127 | } | 127 | } |
128 | 128 | ||
129 | /* KeyboardPicks::initialize {{{1 */ | 129 | /* KeyboardPicks::initialize {{{1 */ |
130 | void KeyboardPicks::initialise() | 130 | void KeyboardPicks::initialise() |
131 | { | 131 | { |
132 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed)); | 132 | setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed)); |
133 | mode = 0; | 133 | mode = 0; |
134 | dc = new KeyboardConfig(this); | 134 | dc = new KeyboardConfig(this); |
135 | configs.append(dc); | 135 | configs.append(dc); |
136 | } | 136 | } |
137 | 137 | ||
138 | /* KeyboardPicks::sizeHint {{{1 */ | 138 | /* KeyboardPicks::sizeHint {{{1 */ |
139 | QSize KeyboardPicks::sizeHint() const | 139 | QSize KeyboardPicks::sizeHint() const |
140 | { | 140 | { |
141 | return QSize(240,fontMetrics().lineSpacing()); | 141 | return QSize(240,fontMetrics().lineSpacing()); |
142 | } | 142 | } |
143 | 143 | ||
144 | 144 | ||
145 | /* KeyboardConfig::generateText {{{1 */ | 145 | /* KeyboardConfig::generateText {{{1 */ |
146 | void KeyboardConfig::generateText(const QString &s) | 146 | void KeyboardConfig::generateText(const QString &s) |
147 | { | 147 | { |
148 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) | 148 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) |
149 | for (int i=0; i<(int)backspaces; i++) { | 149 | for (int i=0; i<(int)backspaces; i++) { |
150 | parent->emitKey( 0, Qt::Key_Backspace, 0, true, false ); | 150 | parent->emitKey( 0, Qt::Key_Backspace, 0, true, false ); |
151 | parent->emitKey( 0, Qt::Key_Backspace, 0, false, false ); | 151 | parent->emitKey( 0, Qt::Key_Backspace, 0, false, false ); |
152 | } | 152 | } |
153 | for (int i=0; i<(int)s.length(); i++) { | 153 | for (int i=0; i<(int)s.length(); i++) { |
154 | parent->emitKey( s[i].unicode(), 0, 0, true, false ); | 154 | parent->emitKey( s[i].unicode(), 0, 0, true, false ); |
155 | parent->emitKey( s[i].unicode(), 0, 0, false, false ); | 155 | parent->emitKey( s[i].unicode(), 0, 0, false, false ); |
156 | } | 156 | } |
157 | parent->emitKey( 0, Qt::Key_Space, 0, true, false ); | 157 | parent->emitKey( 0, Qt::Key_Space, 0, true, false ); |
158 | parent->emitKey( 0, Qt::Key_Space, 0, false, false ); | 158 | parent->emitKey( 0, Qt::Key_Space, 0, false, false ); |
159 | backspaces = 0; | 159 | backspaces = 0; |
160 | #endif | 160 | #endif |
161 | } | 161 | } |
162 | 162 | ||
163 | 163 | ||
164 | 164 | ||
165 | 165 | ||
166 | /* Keyboard::paintEvent {{{1 */ | 166 | /* Keyboard::paintEvent {{{1 */ |
167 | void Keyboard::paintEvent(QPaintEvent* e) | 167 | void Keyboard::paintEvent(QPaintEvent* e) |
168 | { | 168 | { |
169 | QPainter painter(this); | 169 | QPainter painter(this); |
170 | painter.setClipRect(e->rect()); | 170 | painter.setClipRect(e->rect()); |
171 | drawKeyboard( painter ); | 171 | drawKeyboard( painter ); |
172 | picks->dc->draw( &painter ); | 172 | picks->dc->draw( &painter ); |
173 | } | 173 | } |
174 | 174 | ||
175 | 175 | ||
176 | /* Keyboard::drawKeyboard {{{1 */ | 176 | /* Keyboard::drawKeyboard {{{1 */ |
177 | 177 | ||
178 | void Keyboard::drawKeyboard(QPainter &p, int row, int col) | 178 | void Keyboard::drawKeyboard(QPainter &p, int row, int col) |
179 | { | 179 | { |
180 | 180 | ||
181 | 181 | ||
182 | if (row != -1 && col != -1) { //just redraw one key | 182 | if (row != -1 && col != -1) { //just redraw one key |
183 | 183 | ||
184 | int x = 0; | 184 | int x = 0; |
185 | for (int i = 0; i < col; i++) { | 185 | for (int i = 0; i < col; i++) { |
186 | 186 | ||
187 | x += keys->width(row, i) * defaultKeyWidth; | 187 | x += keys->width(row, i) * defaultKeyWidth; |
188 | } | 188 | } |
189 | int y = (row - 1) * keyHeight + (usePicks ? picks->height() : 0); | 189 | int y = (row - 1) * keyHeight + (usePicks ? picks->height() : 0); |
190 | 190 | ||
191 | int keyWidth = keys->width(row, col); | 191 | int keyWidth = keys->width(row, col); |
192 | 192 | ||
193 | p.fillRect(x + 1, y + 1, | 193 | p.fillRect(x + 1, y + 1, |
194 | keyWidth * defaultKeyWidth - 1, keyHeight - 1, | 194 | keyWidth * defaultKeyWidth - 1, keyHeight - 1, |
195 | pressed || keys->pressed(row, col) ? keycolor_pressed : keycolor); | 195 | pressed || keys->pressed(row, col) ? keycolor_pressed : keycolor); |
diff --git a/libopie/big-screen/example/osplitter_mail.cpp b/libopie/big-screen/example/osplitter_mail.cpp index 4eaf3a9..4356baa 100644 --- a/libopie/big-screen/example/osplitter_mail.cpp +++ b/libopie/big-screen/example/osplitter_mail.cpp | |||
@@ -1,82 +1,82 @@ | |||
1 | 1 | ||
2 | #include <qstring.h> | 2 | #include <qstring.h> |
3 | #include <qlabel.h> | 3 | #include <qlabel.h> |
4 | #include <qheader.h> | 4 | #include <qheader.h> |
5 | #include <qlayout.h> | 5 | #include <qlayout.h> |
6 | 6 | ||
7 | #include <qpe/qpeapplication.h> | 7 | #include <qpe/qpeapplication.h> |
8 | #include <opie/oapplicationfactory.h> | 8 | #include <opie/oapplicationfactory.h> |
9 | 9 | ||
10 | #include "../osplitter.h" | 10 | #include "../osplitter.h" |
11 | 11 | ||
12 | #include "osplitter_mail.h" | 12 | #include "osplitter_mail.h" |
13 | 13 | ||
14 | 14 | ||
15 | OPIE_EXPORT_APP( OApplicationFactory<ListViews> ) | 15 | OPIE_EXPORT_APP( OApplicationFactory<ListViews> ) |
16 | 16 | ||
17 | class Folder { | 17 | class Folder { |
18 | int dummy; | 18 | int dummy; |
19 | }; | 19 | }; |
20 | 20 | ||
21 | // ----------------------------------------------------------------- | 21 | // ----------------------------------------------------------------- |
22 | 22 | ||
23 | ListViews::ListViews( QWidget* p, const char* name, WFlags fl ) | 23 | ListViews::ListViews( QWidget* p, const char* name, WFlags fl ) |
24 | : QWidget( p, name, fl ) { | 24 | : QWidget( p, name, fl ) { |
25 | qApp->installEventFilter( this ); | 25 | qApp->installEventFilter( this ); |
26 | m_lstFolders.setAutoDelete( true ); | 26 | m_lstFolders.setAutoDelete( true ); |
27 | QHBoxLayout *lay = new QHBoxLayout(this); | 27 | QHBoxLayout *lay = new QHBoxLayout(this); |
28 | 28 | ||
29 | m_splitter = new OSplitter( Horizontal, this, "SPlitter 1" ); | 29 | m_splitter = new OSplitter( Horizontal, this, "SPlitter 1" ); |
30 | lay->addWidget( m_splitter ); | 30 | lay->addWidget( m_splitter ); |
31 | connect(m_splitter, SIGNAL(sizeChange(bool, const QSize& ) ), | 31 | connect(m_splitter, SIGNAL(sizeChange(bool,const QSize&) ), |
32 | this, SLOT(slotSizeChange(bool, const QSize& ) ) ); | 32 | this, SLOT(slotSizeChange(bool,const QSize&) ) ); |
33 | 33 | ||
34 | m_overview = new QListView( m_splitter ); | 34 | m_overview = new QListView( m_splitter ); |
35 | m_overview->header()->setClickEnabled( FALSE ); | 35 | m_overview->header()->setClickEnabled( FALSE ); |
36 | m_overview->addColumn( tr("Folder") ); | 36 | m_overview->addColumn( tr("Folder") ); |
37 | m_overview->setMaximumWidth( 200 ); | 37 | m_overview->setMaximumWidth( 200 ); |
38 | m_splitter->addWidget( m_overview, "zoom", tr("Folder Overview") ); | 38 | m_splitter->addWidget( m_overview, "zoom", tr("Folder Overview") ); |
39 | m_splitter->setSizeChange( 300 ); | 39 | m_splitter->setSizeChange( 300 ); |
40 | 40 | ||
41 | /* OSplitter starts with the small mode */ | 41 | /* OSplitter starts with the small mode */ |
42 | m_messages = 0; | 42 | m_messages = 0; |
43 | m_message = m_attach = 0; | 43 | m_message = m_attach = 0; |
44 | 44 | ||
45 | splitti = new OSplitter( Vertical, m_splitter, "Splitti2" ); | 45 | splitti = new OSplitter( Vertical, m_splitter, "Splitti2" ); |
46 | splitti->setSizeChange( 300 ); | 46 | splitti->setSizeChange( 300 ); |
47 | splitti->setSizePolicy( QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) ); | 47 | splitti->setSizePolicy( QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) ); |
48 | 48 | ||
49 | QLabel *lbl = new QLabel(splitti); | 49 | QLabel *lbl = new QLabel(splitti); |
50 | lbl->setTextFormat ( Qt::RichText ); | 50 | lbl->setTextFormat ( Qt::RichText ); |
51 | lbl->setText("<br><br><b>Test Test Test</b><br><br><p>Fooooo hjhh</p>"); | 51 | lbl->setText("<br><br><b>Test Test Test</b><br><br><p>Fooooo hjhh</p>"); |
52 | 52 | ||
53 | m_messages = new QListView( splitti ); | 53 | m_messages = new QListView( splitti ); |
54 | m_messages->addColumn(" Messages "); | 54 | m_messages->addColumn(" Messages "); |
55 | 55 | ||
56 | folder1 = new QListView( splitti ); | 56 | folder1 = new QListView( splitti ); |
57 | folder1->addColumn( "Messages 2 " ); | 57 | folder1->addColumn( "Messages 2 " ); |
58 | 58 | ||
59 | splitti->addWidget(m_messages, "mail", tr("Mails") ); | 59 | splitti->addWidget(m_messages, "mail", tr("Mails") ); |
60 | splitti->addWidget(folder1, "folder", tr("Folder") ); | 60 | splitti->addWidget(folder1, "folder", tr("Folder") ); |
61 | splitti->addWidget( lbl, "logo", tr("Label") ); | 61 | splitti->addWidget( lbl, "logo", tr("Label") ); |
62 | m_message = lbl; | 62 | m_message = lbl; |
63 | 63 | ||
64 | m_splitter->addWidget( splitti ); | 64 | m_splitter->addWidget( splitti ); |
65 | 65 | ||
66 | } | 66 | } |
67 | 67 | ||
68 | 68 | ||
69 | ListViews::~ListViews() { | 69 | ListViews::~ListViews() { |
70 | 70 | ||
71 | } | 71 | } |
72 | 72 | ||
73 | 73 | ||
74 | bool ListViews::eventFilter( QObject* obj, QEvent* ev ) { | 74 | bool ListViews::eventFilter( QObject* obj, QEvent* ev ) { |
75 | if (!obj->isWidgetType() ) | 75 | if (!obj->isWidgetType() ) |
76 | return false; | 76 | return false; |
77 | if ( ev->type() == QEvent::MouseButtonRelease ) { | 77 | if ( ev->type() == QEvent::MouseButtonRelease ) { |
78 | qWarning(" name %s, class %s", obj->name(), obj->className() ); | 78 | qWarning(" name %s, class %s", obj->name(), obj->className() ); |
79 | } | 79 | } |
80 | 80 | ||
81 | return false; | 81 | return false; |
82 | } | 82 | } |
diff --git a/libopie/colordialog.cpp b/libopie/colordialog.cpp index d46da41..b2854a6 100644 --- a/libopie/colordialog.cpp +++ b/libopie/colordialog.cpp | |||
@@ -379,196 +379,196 @@ public: | |||
379 | 379 | ||
380 | QRgb currentColor() const { return curCol; } | 380 | QRgb currentColor() const { return curCol; } |
381 | 381 | ||
382 | public slots: | 382 | public slots: |
383 | void setRgb( QRgb rgb ); | 383 | void setRgb( QRgb rgb ); |
384 | 384 | ||
385 | signals: | 385 | signals: |
386 | void newCol( QRgb rgb ); | 386 | void newCol( QRgb rgb ); |
387 | private slots: | 387 | private slots: |
388 | void rgbEd(); | 388 | void rgbEd(); |
389 | void hsvEd(); | 389 | void hsvEd(); |
390 | private: | 390 | private: |
391 | void showCurrentColor(); | 391 | void showCurrentColor(); |
392 | int hue, sat, val; | 392 | int hue, sat, val; |
393 | QRgb curCol; | 393 | QRgb curCol; |
394 | QColNumLineEdit *hEd; | 394 | QColNumLineEdit *hEd; |
395 | QColNumLineEdit *sEd; | 395 | QColNumLineEdit *sEd; |
396 | QColNumLineEdit *vEd; | 396 | QColNumLineEdit *vEd; |
397 | QColNumLineEdit *rEd; | 397 | QColNumLineEdit *rEd; |
398 | QColNumLineEdit *gEd; | 398 | QColNumLineEdit *gEd; |
399 | QColNumLineEdit *bEd; | 399 | QColNumLineEdit *bEd; |
400 | QColNumLineEdit *alphaEd; | 400 | QColNumLineEdit *alphaEd; |
401 | QLabel *alphaLab; | 401 | QLabel *alphaLab; |
402 | QColorShowLabel *lab; | 402 | QColorShowLabel *lab; |
403 | bool rgbOriginal; | 403 | bool rgbOriginal; |
404 | }; | 404 | }; |
405 | 405 | ||
406 | class QColorShowLabel : public QFrame | 406 | class QColorShowLabel : public QFrame |
407 | { | 407 | { |
408 | Q_OBJECT | 408 | Q_OBJECT |
409 | 409 | ||
410 | public: | 410 | public: |
411 | QColorShowLabel( QWidget *parent ) :QFrame( parent ) { | 411 | QColorShowLabel( QWidget *parent ) :QFrame( parent ) { |
412 | setFrameStyle( QFrame::Panel|QFrame::Sunken ); | 412 | setFrameStyle( QFrame::Panel|QFrame::Sunken ); |
413 | setBackgroundMode( PaletteBackground ); | 413 | setBackgroundMode( PaletteBackground ); |
414 | setAcceptDrops( TRUE ); | 414 | setAcceptDrops( TRUE ); |
415 | mousePressed = FALSE; | 415 | mousePressed = FALSE; |
416 | } | 416 | } |
417 | void setColor( QColor c ) { col = c; } | 417 | void setColor( QColor c ) { col = c; } |
418 | 418 | ||
419 | signals: | 419 | signals: |
420 | void colorDropped( QRgb ); | 420 | void colorDropped( QRgb ); |
421 | 421 | ||
422 | protected: | 422 | protected: |
423 | void drawContents( QPainter *p ); | 423 | void drawContents( QPainter *p ); |
424 | void mousePressEvent( QMouseEvent *e ); | 424 | void mousePressEvent( QMouseEvent *e ); |
425 | void mouseReleaseEvent( QMouseEvent *e ); | 425 | void mouseReleaseEvent( QMouseEvent *e ); |
426 | 426 | ||
427 | private: | 427 | private: |
428 | QColor col; | 428 | QColor col; |
429 | bool mousePressed; | 429 | bool mousePressed; |
430 | QPoint pressPos; | 430 | QPoint pressPos; |
431 | 431 | ||
432 | }; | 432 | }; |
433 | 433 | ||
434 | void QColorShowLabel::drawContents( QPainter *p ) | 434 | void QColorShowLabel::drawContents( QPainter *p ) |
435 | { | 435 | { |
436 | p->fillRect( contentsRect(), col ); | 436 | p->fillRect( contentsRect(), col ); |
437 | } | 437 | } |
438 | 438 | ||
439 | void QColorShower::showAlpha( bool b ) | 439 | void QColorShower::showAlpha( bool b ) |
440 | { | 440 | { |
441 | if ( b ) { | 441 | if ( b ) { |
442 | alphaLab->show(); | 442 | alphaLab->show(); |
443 | alphaEd->show(); | 443 | alphaEd->show(); |
444 | } else { | 444 | } else { |
445 | alphaLab->hide(); | 445 | alphaLab->hide(); |
446 | alphaEd->hide(); | 446 | alphaEd->hide(); |
447 | } | 447 | } |
448 | } | 448 | } |
449 | 449 | ||
450 | void QColorShowLabel::mousePressEvent( QMouseEvent *e ) | 450 | void QColorShowLabel::mousePressEvent( QMouseEvent *e ) |
451 | { | 451 | { |
452 | mousePressed = TRUE; | 452 | mousePressed = TRUE; |
453 | pressPos = e->pos(); | 453 | pressPos = e->pos(); |
454 | } | 454 | } |
455 | 455 | ||
456 | void QColorShowLabel::mouseReleaseEvent( QMouseEvent * ) | 456 | void QColorShowLabel::mouseReleaseEvent( QMouseEvent * ) |
457 | { | 457 | { |
458 | if ( !mousePressed ) | 458 | if ( !mousePressed ) |
459 | return; | 459 | return; |
460 | mousePressed = FALSE; | 460 | mousePressed = FALSE; |
461 | } | 461 | } |
462 | 462 | ||
463 | QColorShower::QColorShower( QWidget *parent, const char *name ) | 463 | QColorShower::QColorShower( QWidget *parent, const char *name ) |
464 | :QWidget( parent, name) | 464 | :QWidget( parent, name) |
465 | { | 465 | { |
466 | curCol = qRgb( -1, -1, -1 ); | 466 | curCol = qRgb( -1, -1, -1 ); |
467 | QColIntValidator *val256 = new QColIntValidator( 0, 255, this ); | 467 | QColIntValidator *val256 = new QColIntValidator( 0, 255, this ); |
468 | QColIntValidator *val360 = new QColIntValidator( 0, 360, this ); | 468 | QColIntValidator *val360 = new QColIntValidator( 0, 360, this ); |
469 | 469 | ||
470 | QGridLayout *gl = new QGridLayout( this, 1, 1, 2 ); | 470 | QGridLayout *gl = new QGridLayout( this, 1, 1, 2 ); |
471 | gl->setMargin( 0 ); | 471 | gl->setMargin( 0 ); |
472 | lab = new QColorShowLabel( this ); | 472 | lab = new QColorShowLabel( this ); |
473 | lab->setMinimumWidth( 60 ); //### | 473 | lab->setMinimumWidth( 60 ); //### |
474 | gl->addMultiCellWidget(lab, 0,-1,0,0); | 474 | gl->addMultiCellWidget(lab, 0,-1,0,0); |
475 | connect( lab, SIGNAL( colorDropped( QRgb ) ), | 475 | connect( lab, SIGNAL( colorDropped(QRgb) ), |
476 | this, SIGNAL( newCol( QRgb ) ) ); | 476 | this, SIGNAL( newCol(QRgb) ) ); |
477 | connect( lab, SIGNAL( colorDropped( QRgb ) ), | 477 | connect( lab, SIGNAL( colorDropped(QRgb) ), |
478 | this, SLOT( setRgb( QRgb ) ) ); | 478 | this, SLOT( setRgb(QRgb) ) ); |
479 | 479 | ||
480 | hEd = new QColNumLineEdit( this ); | 480 | hEd = new QColNumLineEdit( this ); |
481 | hEd->setValidator( val360 ); | 481 | hEd->setValidator( val360 ); |
482 | QLabel *l = new QLabel( hEd, OColorDialog::tr("Hue:"), this ); | 482 | QLabel *l = new QLabel( hEd, OColorDialog::tr("Hue:"), this ); |
483 | l->setAlignment( AlignRight|AlignVCenter ); | 483 | l->setAlignment( AlignRight|AlignVCenter ); |
484 | gl->addWidget( l, 0, 1 ); | 484 | gl->addWidget( l, 0, 1 ); |
485 | gl->addWidget( hEd, 0, 2 ); | 485 | gl->addWidget( hEd, 0, 2 ); |
486 | 486 | ||
487 | sEd = new QColNumLineEdit( this ); | 487 | sEd = new QColNumLineEdit( this ); |
488 | sEd->setValidator( val256 ); | 488 | sEd->setValidator( val256 ); |
489 | l = new QLabel( sEd, OColorDialog::tr("Sat:"), this ); | 489 | l = new QLabel( sEd, OColorDialog::tr("Sat:"), this ); |
490 | l->setAlignment( AlignRight|AlignVCenter ); | 490 | l->setAlignment( AlignRight|AlignVCenter ); |
491 | gl->addWidget( l, 1, 1 ); | 491 | gl->addWidget( l, 1, 1 ); |
492 | gl->addWidget( sEd, 1, 2 ); | 492 | gl->addWidget( sEd, 1, 2 ); |
493 | 493 | ||
494 | vEd = new QColNumLineEdit( this ); | 494 | vEd = new QColNumLineEdit( this ); |
495 | vEd->setValidator( val256 ); | 495 | vEd->setValidator( val256 ); |
496 | l = new QLabel( vEd, OColorDialog::tr("Val:"), this ); | 496 | l = new QLabel( vEd, OColorDialog::tr("Val:"), this ); |
497 | l->setAlignment( AlignRight|AlignVCenter ); | 497 | l->setAlignment( AlignRight|AlignVCenter ); |
498 | gl->addWidget( l, 2, 1 ); | 498 | gl->addWidget( l, 2, 1 ); |
499 | gl->addWidget( vEd, 2, 2 ); | 499 | gl->addWidget( vEd, 2, 2 ); |
500 | 500 | ||
501 | rEd = new QColNumLineEdit( this ); | 501 | rEd = new QColNumLineEdit( this ); |
502 | rEd->setValidator( val256 ); | 502 | rEd->setValidator( val256 ); |
503 | l = new QLabel( rEd, OColorDialog::tr("Red:"), this ); | 503 | l = new QLabel( rEd, OColorDialog::tr("Red:"), this ); |
504 | l->setAlignment( AlignRight|AlignVCenter ); | 504 | l->setAlignment( AlignRight|AlignVCenter ); |
505 | gl->addWidget( l, 0, 3 ); | 505 | gl->addWidget( l, 0, 3 ); |
506 | gl->addWidget( rEd, 0, 4 ); | 506 | gl->addWidget( rEd, 0, 4 ); |
507 | 507 | ||
508 | gEd = new QColNumLineEdit( this ); | 508 | gEd = new QColNumLineEdit( this ); |
509 | gEd->setValidator( val256 ); | 509 | gEd->setValidator( val256 ); |
510 | l = new QLabel( gEd, OColorDialog::tr("Green:"), this ); | 510 | l = new QLabel( gEd, OColorDialog::tr("Green:"), this ); |
511 | l->setAlignment( AlignRight|AlignVCenter ); | 511 | l->setAlignment( AlignRight|AlignVCenter ); |
512 | gl->addWidget( l, 1, 3 ); | 512 | gl->addWidget( l, 1, 3 ); |
513 | gl->addWidget( gEd, 1, 4 ); | 513 | gl->addWidget( gEd, 1, 4 ); |
514 | 514 | ||
515 | bEd = new QColNumLineEdit( this ); | 515 | bEd = new QColNumLineEdit( this ); |
516 | bEd->setValidator( val256 ); | 516 | bEd->setValidator( val256 ); |
517 | l = new QLabel( bEd, OColorDialog::tr("Blue:"), this ); | 517 | l = new QLabel( bEd, OColorDialog::tr("Blue:"), this ); |
518 | l->setAlignment( AlignRight|AlignVCenter ); | 518 | l->setAlignment( AlignRight|AlignVCenter ); |
519 | gl->addWidget( l, 2, 3 ); | 519 | gl->addWidget( l, 2, 3 ); |
520 | gl->addWidget( bEd, 2, 4 ); | 520 | gl->addWidget( bEd, 2, 4 ); |
521 | 521 | ||
522 | alphaEd = new QColNumLineEdit( this ); | 522 | alphaEd = new QColNumLineEdit( this ); |
523 | alphaEd->setValidator( val256 ); | 523 | alphaEd->setValidator( val256 ); |
524 | alphaLab = new QLabel( alphaEd, OColorDialog::tr("Alpha channel:"), this ); | 524 | alphaLab = new QLabel( alphaEd, OColorDialog::tr("Alpha channel:"), this ); |
525 | alphaLab->setAlignment( AlignRight|AlignVCenter ); | 525 | alphaLab->setAlignment( AlignRight|AlignVCenter ); |
526 | gl->addMultiCellWidget( alphaLab, 3, 3, 1, 3 ); | 526 | gl->addMultiCellWidget( alphaLab, 3, 3, 1, 3 ); |
527 | gl->addWidget( alphaEd, 3, 4 ); | 527 | gl->addWidget( alphaEd, 3, 4 ); |
528 | alphaEd->hide(); | 528 | alphaEd->hide(); |
529 | alphaLab->hide(); | 529 | alphaLab->hide(); |
530 | 530 | ||
531 | connect( hEd, SIGNAL(textChanged(const QString&)), this, SLOT(hsvEd()) ); | 531 | connect( hEd, SIGNAL(textChanged(const QString&)), this, SLOT(hsvEd()) ); |
532 | connect( sEd, SIGNAL(textChanged(const QString&)), this, SLOT(hsvEd()) ); | 532 | connect( sEd, SIGNAL(textChanged(const QString&)), this, SLOT(hsvEd()) ); |
533 | connect( vEd, SIGNAL(textChanged(const QString&)), this, SLOT(hsvEd()) ); | 533 | connect( vEd, SIGNAL(textChanged(const QString&)), this, SLOT(hsvEd()) ); |
534 | 534 | ||
535 | connect( rEd, SIGNAL(textChanged(const QString&)), this, SLOT(rgbEd()) ); | 535 | connect( rEd, SIGNAL(textChanged(const QString&)), this, SLOT(rgbEd()) ); |
536 | connect( gEd, SIGNAL(textChanged(const QString&)), this, SLOT(rgbEd()) ); | 536 | connect( gEd, SIGNAL(textChanged(const QString&)), this, SLOT(rgbEd()) ); |
537 | connect( bEd, SIGNAL(textChanged(const QString&)), this, SLOT(rgbEd()) ); | 537 | connect( bEd, SIGNAL(textChanged(const QString&)), this, SLOT(rgbEd()) ); |
538 | } | 538 | } |
539 | 539 | ||
540 | void QColorShower::showCurrentColor() | 540 | void QColorShower::showCurrentColor() |
541 | { | 541 | { |
542 | lab->setColor( currentColor() ); | 542 | lab->setColor( currentColor() ); |
543 | lab->repaint(FALSE); //### | 543 | lab->repaint(FALSE); //### |
544 | } | 544 | } |
545 | 545 | ||
546 | void QColorShower::rgbEd() | 546 | void QColorShower::rgbEd() |
547 | { | 547 | { |
548 | rgbOriginal = TRUE; | 548 | rgbOriginal = TRUE; |
549 | curCol = qRgb( rEd->val(), gEd->val(), bEd->val() ); | 549 | curCol = qRgb( rEd->val(), gEd->val(), bEd->val() ); |
550 | rgb2hsv(currentColor(), hue, sat, val ); | 550 | rgb2hsv(currentColor(), hue, sat, val ); |
551 | 551 | ||
552 | hEd->setNum( hue ); | 552 | hEd->setNum( hue ); |
553 | sEd->setNum( sat ); | 553 | sEd->setNum( sat ); |
554 | vEd->setNum( val ); | 554 | vEd->setNum( val ); |
555 | 555 | ||
556 | showCurrentColor(); | 556 | showCurrentColor(); |
557 | emit newCol( currentColor() ); | 557 | emit newCol( currentColor() ); |
558 | } | 558 | } |
559 | 559 | ||
560 | void QColorShower::hsvEd() | 560 | void QColorShower::hsvEd() |
561 | { | 561 | { |
562 | rgbOriginal = FALSE; | 562 | rgbOriginal = FALSE; |
563 | hue = hEd->val(); | 563 | hue = hEd->val(); |
564 | sat = sEd->val(); | 564 | sat = sEd->val(); |
565 | val = vEd->val(); | 565 | val = vEd->val(); |
566 | 566 | ||
567 | curCol = QColor( hue, sat, val, QColor::Hsv ).rgb(); | 567 | curCol = QColor( hue, sat, val, QColor::Hsv ).rgb(); |
568 | 568 | ||
569 | rEd->setNum( qRed(currentColor()) ); | 569 | rEd->setNum( qRed(currentColor()) ); |
570 | gEd->setNum( qGreen(currentColor()) ); | 570 | gEd->setNum( qGreen(currentColor()) ); |
571 | bEd->setNum( qBlue(currentColor()) ); | 571 | bEd->setNum( qBlue(currentColor()) ); |
572 | 572 | ||
573 | showCurrentColor(); | 573 | showCurrentColor(); |
574 | emit newCol( currentColor() ); | 574 | emit newCol( currentColor() ); |
diff --git a/libopie/colorpopupmenu.cpp b/libopie/colorpopupmenu.cpp index 0d66fba..03ad233 100644 --- a/libopie/colorpopupmenu.cpp +++ b/libopie/colorpopupmenu.cpp | |||
@@ -59,114 +59,114 @@ void OColorPanelButton::setActive( bool active ) | |||
59 | setFrameStyle( NoFrame ); | 59 | setFrameStyle( NoFrame ); |
60 | } | 60 | } |
61 | } | 61 | } |
62 | 62 | ||
63 | void OColorPanelButton::enterEvent( QEvent* ) | 63 | void OColorPanelButton::enterEvent( QEvent* ) |
64 | { | 64 | { |
65 | if ( !m_active ) { | 65 | if ( !m_active ) { |
66 | setFrameStyle( Panel | Sunken ); | 66 | setFrameStyle( Panel | Sunken ); |
67 | } | 67 | } |
68 | } | 68 | } |
69 | 69 | ||
70 | void OColorPanelButton::leaveEvent( QEvent* ) | 70 | void OColorPanelButton::leaveEvent( QEvent* ) |
71 | { | 71 | { |
72 | if ( !m_active ) { | 72 | if ( !m_active ) { |
73 | setFrameStyle( NoFrame ); | 73 | setFrameStyle( NoFrame ); |
74 | } | 74 | } |
75 | } | 75 | } |
76 | 76 | ||
77 | void OColorPanelButton::paintEvent( QPaintEvent* e ) | 77 | void OColorPanelButton::paintEvent( QPaintEvent* e ) |
78 | { | 78 | { |
79 | QFrame::paintEvent( e ); | 79 | QFrame::paintEvent( e ); |
80 | 80 | ||
81 | QPainter painter; | 81 | QPainter painter; |
82 | painter.begin( this ); | 82 | painter.begin( this ); |
83 | painter.fillRect( 2, 2, 12, 12, m_color ); | 83 | painter.fillRect( 2, 2, 12, 12, m_color ); |
84 | painter.setPen( Qt::black ); | 84 | painter.setPen( Qt::black ); |
85 | painter.drawRect( 2, 2, 12, 12 ); | 85 | painter.drawRect( 2, 2, 12, 12 ); |
86 | painter.end(); | 86 | painter.end(); |
87 | } | 87 | } |
88 | 88 | ||
89 | void OColorPanelButton::mouseReleaseEvent( QMouseEvent* ) | 89 | void OColorPanelButton::mouseReleaseEvent( QMouseEvent* ) |
90 | { | 90 | { |
91 | emit selected( m_color ); | 91 | emit selected( m_color ); |
92 | } | 92 | } |
93 | 93 | ||
94 | OColorPopupMenu::OColorPopupMenu( const QColor& color, QWidget* parent, const char* name ) | 94 | OColorPopupMenu::OColorPopupMenu( const QColor& color, QWidget* parent, const char* name ) |
95 | : QPopupMenu( parent, name ) | 95 | : QPopupMenu( parent, name ) |
96 | { | 96 | { |
97 | m_color = color; | 97 | m_color = color; |
98 | 98 | ||
99 | colorPanel = new QWidget( this ); | 99 | colorPanel = new QWidget( this ); |
100 | 100 | ||
101 | colorLayout = new QGridLayout(colorPanel, 5, 6); | 101 | colorLayout = new QGridLayout(colorPanel, 5, 6); |
102 | 102 | ||
103 | addColor(QColor(255, 255, 255), 0, 1); | 103 | addColor(QColor(255, 255, 255), 0, 1); |
104 | addColor(QColor(192, 192, 192), 0, 2); | 104 | addColor(QColor(192, 192, 192), 0, 2); |
105 | addColor(QColor(128, 128, 128), 0, 3); | 105 | addColor(QColor(128, 128, 128), 0, 3); |
106 | addColor(QColor(64, 64, 64), 0, 4); | 106 | addColor(QColor(64, 64, 64), 0, 4); |
107 | addColor(QColor(0, 0, 0), 0, 5); | 107 | addColor(QColor(0, 0, 0), 0, 5); |
108 | 108 | ||
109 | addColor(QColor(255, 0, 0), 1, 0); | 109 | addColor(QColor(255, 0, 0), 1, 0); |
110 | addColor(QColor(255, 128, 0), 1, 1); | 110 | addColor(QColor(255, 128, 0), 1, 1); |
111 | addColor(QColor(255, 255, 0), 1, 2); | 111 | addColor(QColor(255, 255, 0), 1, 2); |
112 | addColor(QColor(128, 255, 0), 1, 3); | 112 | addColor(QColor(128, 255, 0), 1, 3); |
113 | addColor(QColor(0, 255, 0), 1, 4); | 113 | addColor(QColor(0, 255, 0), 1, 4); |
114 | addColor(QColor(0, 255, 128), 1, 5); | 114 | addColor(QColor(0, 255, 128), 1, 5); |
115 | 115 | ||
116 | addColor(QColor(128, 0, 0), 2, 0); | 116 | addColor(QColor(128, 0, 0), 2, 0); |
117 | addColor(QColor(128, 64, 0), 2, 1); | 117 | addColor(QColor(128, 64, 0), 2, 1); |
118 | addColor(QColor(128, 128, 0), 2, 2); | 118 | addColor(QColor(128, 128, 0), 2, 2); |
119 | addColor(QColor(64, 128, 0), 2, 3); | 119 | addColor(QColor(64, 128, 0), 2, 3); |
120 | addColor(QColor(0, 128, 0), 2, 4); | 120 | addColor(QColor(0, 128, 0), 2, 4); |
121 | addColor(QColor(0, 128, 64), 2, 5); | 121 | addColor(QColor(0, 128, 64), 2, 5); |
122 | 122 | ||
123 | addColor(QColor(0, 255, 255), 3, 0); | 123 | addColor(QColor(0, 255, 255), 3, 0); |
124 | addColor(QColor(0, 128, 255), 3, 1); | 124 | addColor(QColor(0, 128, 255), 3, 1); |
125 | addColor(QColor(0, 0, 255), 3, 2); | 125 | addColor(QColor(0, 0, 255), 3, 2); |
126 | addColor(QColor(128, 0, 255), 3, 3); | 126 | addColor(QColor(128, 0, 255), 3, 3); |
127 | addColor(QColor(255, 0, 255), 3, 4); | 127 | addColor(QColor(255, 0, 255), 3, 4); |
128 | addColor(QColor(255, 0, 128), 3, 5); | 128 | addColor(QColor(255, 0, 128), 3, 5); |
129 | 129 | ||
130 | addColor(QColor(0, 128, 128), 4, 0); | 130 | addColor(QColor(0, 128, 128), 4, 0); |
131 | addColor(QColor(0, 64, 128), 4, 1); | 131 | addColor(QColor(0, 64, 128), 4, 1); |
132 | addColor(QColor(0, 0, 128), 4, 2); | 132 | addColor(QColor(0, 0, 128), 4, 2); |
133 | addColor(QColor(64, 0, 128), 4, 3); | 133 | addColor(QColor(64, 0, 128), 4, 3); |
134 | addColor(QColor(128, 0, 128), 4, 4); | 134 | addColor(QColor(128, 0, 128), 4, 4); |
135 | addColor(QColor(128, 0, 64), 4, 5); | 135 | addColor(QColor(128, 0, 64), 4, 5); |
136 | 136 | ||
137 | insertItem( colorPanel ); | 137 | insertItem( colorPanel ); |
138 | insertSeparator(); | 138 | insertSeparator(); |
139 | insertItem(tr("More"),this,SLOT( moreColorClicked())); | 139 | insertItem(tr("More"),this,SLOT( moreColorClicked())); |
140 | /* | 140 | /* |
141 | QAction* chooseColorAction = new QAction( tr( "More" ), tr( "More..." ), 0, colorPanel, "More" ); | 141 | QAction* chooseColorAction = new QAction( tr( "More" ), tr( "More..." ), 0, colorPanel, "More" ); |
142 | connect( chooseColorAction, SIGNAL( activated() ), this, SLOT( moreColorClicked() ) ); | 142 | connect( chooseColorAction, SIGNAL( activated() ), this, SLOT( moreColorClicked() ) ); |
143 | chooseColorAction->addTo( this ); | 143 | chooseColorAction->addTo( this ); |
144 | */ | 144 | */ |
145 | activateItemAt( 0 ); | 145 | activateItemAt( 0 ); |
146 | } | 146 | } |
147 | 147 | ||
148 | OColorPopupMenu::~OColorPopupMenu() | 148 | OColorPopupMenu::~OColorPopupMenu() |
149 | { | 149 | { |
150 | } | 150 | } |
151 | 151 | ||
152 | void OColorPopupMenu::addColor( const QColor& color, int row, int col ) | 152 | void OColorPopupMenu::addColor( const QColor& color, int row, int col ) |
153 | { | 153 | { |
154 | OColorPanelButton* panelButton = new OColorPanelButton( color, colorPanel ); | 154 | OColorPanelButton* panelButton = new OColorPanelButton( color, colorPanel ); |
155 | connect( panelButton, SIGNAL( selected( const QColor& ) ), this, SLOT( buttonSelected( const QColor& ) ) ); | 155 | connect( panelButton, SIGNAL( selected(const QColor&) ), this, SLOT( buttonSelected(const QColor&) ) ); |
156 | colorLayout->addWidget( panelButton, row, col ); | 156 | colorLayout->addWidget( panelButton, row, col ); |
157 | } | 157 | } |
158 | 158 | ||
159 | void OColorPopupMenu::buttonSelected( const QColor& color ) | 159 | void OColorPopupMenu::buttonSelected( const QColor& color ) |
160 | { | 160 | { |
161 | m_color = color; | 161 | m_color = color; |
162 | emit colorSelected( color ); | 162 | emit colorSelected( color ); |
163 | hide(); | 163 | hide(); |
164 | } | 164 | } |
165 | 165 | ||
166 | void OColorPopupMenu::moreColorClicked() | 166 | void OColorPopupMenu::moreColorClicked() |
167 | { | 167 | { |
168 | QColor color = OColorDialog::getColor( m_color ); | 168 | QColor color = OColorDialog::getColor( m_color ); |
169 | m_color = color; | 169 | m_color = color; |
170 | emit colorSelected( color ); | 170 | emit colorSelected( color ); |
171 | hide(); | 171 | hide(); |
172 | } | 172 | } |
diff --git a/libopie/ocolorbutton.cpp b/libopie/ocolorbutton.cpp index 93fe5d0..298dba2 100644 --- a/libopie/ocolorbutton.cpp +++ b/libopie/ocolorbutton.cpp | |||
@@ -1,139 +1,139 @@ | |||
1 | /* | 1 | /* |
2 | =. This file is part of the OPIE Project | 2 | =. This file is part of the OPIE Project |
3 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> | 3 | .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> |
4 | .>+-= | 4 | .>+-= |
5 | _;:, .> :=|. This library is free software; you can | 5 | _;:, .> :=|. This library is free software; you can |
6 | .> <`_, > . <= redistribute it and/or modify it under | 6 | .> <`_, > . <= redistribute it and/or modify it under |
7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This library is distributed in the hope that | 12 | .i_,=:_. -<s. This library is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
17 | ..}^=.= = ; Library General Public License for more | 17 | ..}^=.= = ; Library General Public License for more |
18 | ++= -. .` .: details. | 18 | ++= -. .` .: details. |
19 | : = ...= . :.=- | 19 | : = ...= . :.=- |
20 | -. .:....=;==+<; You should have received a copy of the GNU | 20 | -. .:....=;==+<; You should have received a copy of the GNU |
21 | -_. . . )=. = Library General Public License along with | 21 | -_. . . )=. = Library General Public License along with |
22 | -- :-=` this library; see the file COPYING.LIB. | 22 | -- :-=` this library; see the file COPYING.LIB. |
23 | If not, write to the Free Software Foundation, | 23 | If not, write to the Free Software Foundation, |
24 | Inc., 59 Temple Place - Suite 330, | 24 | Inc., 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include <opie/colorpopupmenu.h> | 29 | #include <opie/colorpopupmenu.h> |
30 | #include <opie/ocolorbutton.h> | 30 | #include <opie/ocolorbutton.h> |
31 | 31 | ||
32 | #include <qpe/resource.h> | 32 | #include <qpe/resource.h> |
33 | 33 | ||
34 | struct OColorButtonPrivate { | 34 | struct OColorButtonPrivate { |
35 | QPopupMenu *m_menu; | 35 | QPopupMenu *m_menu; |
36 | QColor m_color; | 36 | QColor m_color; |
37 | }; | 37 | }; |
38 | 38 | ||
39 | 39 | ||
40 | /** | 40 | /** |
41 | * This concstructs a Color Button with @param color as the start color | 41 | * This concstructs a Color Button with @param color as the start color |
42 | * It'll use a OColorPopupMenu internally | 42 | * It'll use a OColorPopupMenu internally |
43 | * | 43 | * |
44 | * @param parent The parent of the Color Button | 44 | * @param parent The parent of the Color Button |
45 | * @param color The color from where to start on | 45 | * @param color The color from where to start on |
46 | * @param name @see QObject | 46 | * @param name @see QObject |
47 | */ | 47 | */ |
48 | OColorButton::OColorButton ( QWidget *parent, const QColor &color, const char *name ) | 48 | OColorButton::OColorButton ( QWidget *parent, const QColor &color, const char *name ) |
49 | : QPushButton ( parent, name ) | 49 | : QPushButton ( parent, name ) |
50 | { | 50 | { |
51 | d = new OColorButtonPrivate; | 51 | d = new OColorButtonPrivate; |
52 | 52 | ||
53 | d-> m_menu = new OColorPopupMenu ( color, 0, 0 ); | 53 | d-> m_menu = new OColorPopupMenu ( color, 0, 0 ); |
54 | setPopup ( d-> m_menu ); | 54 | setPopup ( d-> m_menu ); |
55 | //setPopupDelay ( 0 ); | 55 | //setPopupDelay ( 0 ); |
56 | connect ( d-> m_menu, SIGNAL( colorSelected ( const QColor & )), this, SLOT( updateColor ( const QColor & ))); | 56 | connect ( d-> m_menu, SIGNAL( colorSelected(const QColor&)), this, SLOT( updateColor(const QColor&))); |
57 | 57 | ||
58 | updateColor ( color ); | 58 | updateColor ( color ); |
59 | 59 | ||
60 | QSize s = sizeHint ( ) + QSize ( 12, 0 ); | 60 | QSize s = sizeHint ( ) + QSize ( 12, 0 ); |
61 | setMinimumSize ( s ); | 61 | setMinimumSize ( s ); |
62 | setMaximumSize ( s. width ( ) * 2, s. height ( )); | 62 | setMaximumSize ( s. width ( ) * 2, s. height ( )); |
63 | } | 63 | } |
64 | 64 | ||
65 | /** | 65 | /** |
66 | * This destructs the object | 66 | * This destructs the object |
67 | */ | 67 | */ |
68 | OColorButton::~OColorButton ( ) | 68 | OColorButton::~OColorButton ( ) |
69 | { | 69 | { |
70 | delete d; | 70 | delete d; |
71 | } | 71 | } |
72 | 72 | ||
73 | /** | 73 | /** |
74 | * @return Returns the current color of the button | 74 | * @return Returns the current color of the button |
75 | */ | 75 | */ |
76 | QColor OColorButton::color ( ) const | 76 | QColor OColorButton::color ( ) const |
77 | { | 77 | { |
78 | return d-> m_color; | 78 | return d-> m_color; |
79 | } | 79 | } |
80 | 80 | ||
81 | /** | 81 | /** |
82 | * This method sets the color of the button | 82 | * This method sets the color of the button |
83 | * @param c The color to be set. | 83 | * @param c The color to be set. |
84 | */ | 84 | */ |
85 | void OColorButton::setColor ( const QColor &c ) | 85 | void OColorButton::setColor ( const QColor &c ) |
86 | { | 86 | { |
87 | updateColor ( c ); | 87 | updateColor ( c ); |
88 | } | 88 | } |
89 | 89 | ||
90 | /** | 90 | /** |
91 | * @internal | 91 | * @internal |
92 | */ | 92 | */ |
93 | void OColorButton::updateColor ( const QColor &c ) | 93 | void OColorButton::updateColor ( const QColor &c ) |
94 | { | 94 | { |
95 | d-> m_color = c; | 95 | d-> m_color = c; |
96 | 96 | ||
97 | QImage img ( 16, 16, 32 ); | 97 | QImage img ( 16, 16, 32 ); |
98 | img. fill ( 0 ); | 98 | img. fill ( 0 ); |
99 | 99 | ||
100 | int r, g, b; | 100 | int r, g, b; |
101 | c. rgb ( &r, &g, &b ); | 101 | c. rgb ( &r, &g, &b ); |
102 | 102 | ||
103 | int w = img. width ( ); | 103 | int w = img. width ( ); |
104 | int h = img. height ( ); | 104 | int h = img. height ( ); |
105 | 105 | ||
106 | int dx = w * 20 / 100; // 15% | 106 | int dx = w * 20 / 100; // 15% |
107 | int dy = h * 20 / 100; | 107 | int dy = h * 20 / 100; |
108 | 108 | ||
109 | for ( int y = 0; y < h; y++ ) { | 109 | for ( int y = 0; y < h; y++ ) { |
110 | for ( int x = 0; x < w; x++ ) { | 110 | for ( int x = 0; x < w; x++ ) { |
111 | double alpha = 1.0; | 111 | double alpha = 1.0; |
112 | 112 | ||
113 | if ( x < dx ) | 113 | if ( x < dx ) |
114 | alpha *= ( double ( x + 1 ) / dx ); | 114 | alpha *= ( double ( x + 1 ) / dx ); |
115 | else if ( x >= w - dx ) | 115 | else if ( x >= w - dx ) |
116 | alpha *= ( double ( w - x ) / dx ); | 116 | alpha *= ( double ( w - x ) / dx ); |
117 | if ( y < dy ) | 117 | if ( y < dy ) |
118 | alpha *= ( double ( y + 1 ) / dy ); | 118 | alpha *= ( double ( y + 1 ) / dy ); |
119 | else if ( y >= h - dy ) | 119 | else if ( y >= h - dy ) |
120 | alpha *= ( double ( h - y ) / dy ); | 120 | alpha *= ( double ( h - y ) / dy ); |
121 | 121 | ||
122 | int a = int ( alpha * 255.0 ); | 122 | int a = int ( alpha * 255.0 ); |
123 | if ( a < 0 ) | 123 | if ( a < 0 ) |
124 | a = 0; | 124 | a = 0; |
125 | if ( a > 255 ) | 125 | if ( a > 255 ) |
126 | a = 255; | 126 | a = 255; |
127 | 127 | ||
128 | img. setPixel ( x, y, qRgba ( r, g, b, a )); | 128 | img. setPixel ( x, y, qRgba ( r, g, b, a )); |
129 | } | 129 | } |
130 | } | 130 | } |
131 | img. setAlphaBuffer ( true ); | 131 | img. setAlphaBuffer ( true ); |
132 | 132 | ||
133 | QPixmap pix; | 133 | QPixmap pix; |
134 | pix. convertFromImage ( img ); | 134 | pix. convertFromImage ( img ); |
135 | setPixmap ( pix ); | 135 | setPixmap ( pix ); |
136 | 136 | ||
137 | emit colorSelected ( c ); | 137 | emit colorSelected ( c ); |
138 | } | 138 | } |
139 | 139 | ||
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp index c0b6efa..4258d60 100644 --- a/libopie/odevice.cpp +++ b/libopie/odevice.cpp | |||
@@ -439,193 +439,193 @@ static QCString makeChannel ( const char *str ) | |||
439 | static inline bool isQWS() | 439 | static inline bool isQWS() |
440 | { | 440 | { |
441 | return qApp ? ( qApp-> type ( ) == QApplication::GuiServer ) : false; | 441 | return qApp ? ( qApp-> type ( ) == QApplication::GuiServer ) : false; |
442 | } | 442 | } |
443 | 443 | ||
444 | ODevice *ODevice::inst ( ) | 444 | ODevice *ODevice::inst ( ) |
445 | { | 445 | { |
446 | static ODevice *dev = 0; | 446 | static ODevice *dev = 0; |
447 | 447 | ||
448 | if ( !dev ) { | 448 | if ( !dev ) { |
449 | if ( QFile::exists ( "/proc/hal/model" )) | 449 | if ( QFile::exists ( "/proc/hal/model" )) |
450 | dev = new iPAQ ( ); | 450 | dev = new iPAQ ( ); |
451 | else if ( Zaurus::isZaurus() ) | 451 | else if ( Zaurus::isZaurus() ) |
452 | dev = new Zaurus ( ); | 452 | dev = new Zaurus ( ); |
453 | else if ( QFile::exists ( "/proc/ucb1x00" ) && QFile::exists ( "/proc/cs3" )) | 453 | else if ( QFile::exists ( "/proc/ucb1x00" ) && QFile::exists ( "/proc/cs3" )) |
454 | dev = new SIMpad ( ); | 454 | dev = new SIMpad ( ); |
455 | else if ( QFile::exists ( "/proc/sys/board/name" )) | 455 | else if ( QFile::exists ( "/proc/sys/board/name" )) |
456 | dev = new Ramses ( ); | 456 | dev = new Ramses ( ); |
457 | else if ( Yopy::isYopy() ) | 457 | else if ( Yopy::isYopy() ) |
458 | dev = new Yopy ( ); | 458 | dev = new Yopy ( ); |
459 | else if ( Jornada::isJornada() ) | 459 | else if ( Jornada::isJornada() ) |
460 | dev = new Jornada ( ); | 460 | dev = new Jornada ( ); |
461 | else | 461 | else |
462 | dev = new ODevice ( ); | 462 | dev = new ODevice ( ); |
463 | dev-> init ( ); | 463 | dev-> init ( ); |
464 | } | 464 | } |
465 | return dev; | 465 | return dev; |
466 | } | 466 | } |
467 | 467 | ||
468 | 468 | ||
469 | /************************************************** | 469 | /************************************************** |
470 | * | 470 | * |
471 | * common | 471 | * common |
472 | * | 472 | * |
473 | **************************************************/ | 473 | **************************************************/ |
474 | 474 | ||
475 | 475 | ||
476 | ODevice::ODevice ( ) | 476 | ODevice::ODevice ( ) |
477 | { | 477 | { |
478 | d = new ODeviceData; | 478 | d = new ODeviceData; |
479 | 479 | ||
480 | d-> m_modelstr = "Unknown"; | 480 | d-> m_modelstr = "Unknown"; |
481 | d-> m_model = Model_Unknown; | 481 | d-> m_model = Model_Unknown; |
482 | d-> m_vendorstr = "Unknown"; | 482 | d-> m_vendorstr = "Unknown"; |
483 | d-> m_vendor = Vendor_Unknown; | 483 | d-> m_vendor = Vendor_Unknown; |
484 | d-> m_systemstr = "Unknown"; | 484 | d-> m_systemstr = "Unknown"; |
485 | d-> m_system = System_Unknown; | 485 | d-> m_system = System_Unknown; |
486 | d-> m_sysverstr = "0.0"; | 486 | d-> m_sysverstr = "0.0"; |
487 | d-> m_rotation = Rot0; | 487 | d-> m_rotation = Rot0; |
488 | d-> m_direction = CW; | 488 | d-> m_direction = CW; |
489 | 489 | ||
490 | d-> m_holdtime = 1000; // 1000ms | 490 | d-> m_holdtime = 1000; // 1000ms |
491 | d-> m_buttons = 0; | 491 | d-> m_buttons = 0; |
492 | d-> m_cpu_frequencies = new QStrList; | 492 | d-> m_cpu_frequencies = new QStrList; |
493 | } | 493 | } |
494 | 494 | ||
495 | void ODevice::systemMessage ( const QCString &msg, const QByteArray & ) | 495 | void ODevice::systemMessage ( const QCString &msg, const QByteArray & ) |
496 | { | 496 | { |
497 | if ( msg == "deviceButtonMappingChanged()" ) { | 497 | if ( msg == "deviceButtonMappingChanged()" ) { |
498 | reloadButtonMapping ( ); | 498 | reloadButtonMapping ( ); |
499 | } | 499 | } |
500 | } | 500 | } |
501 | 501 | ||
502 | void ODevice::init ( ) | 502 | void ODevice::init ( ) |
503 | { | 503 | { |
504 | } | 504 | } |
505 | 505 | ||
506 | /** | 506 | /** |
507 | * This method initialises the button mapping | 507 | * This method initialises the button mapping |
508 | */ | 508 | */ |
509 | void ODevice::initButtons ( ) | 509 | void ODevice::initButtons ( ) |
510 | { | 510 | { |
511 | if ( d-> m_buttons ) | 511 | if ( d-> m_buttons ) |
512 | return; | 512 | return; |
513 | 513 | ||
514 | // Simulation uses iPAQ 3660 device buttons | 514 | // Simulation uses iPAQ 3660 device buttons |
515 | 515 | ||
516 | qDebug ( "init Buttons" ); | 516 | qDebug ( "init Buttons" ); |
517 | d-> m_buttons = new QValueList <ODeviceButton>; | 517 | d-> m_buttons = new QValueList <ODeviceButton>; |
518 | 518 | ||
519 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { | 519 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { |
520 | i_button *ib = ipaq_buttons + i; | 520 | i_button *ib = ipaq_buttons + i; |
521 | ODeviceButton b; | 521 | ODeviceButton b; |
522 | 522 | ||
523 | if (( ib-> model & Model_iPAQ_H36xx ) == Model_iPAQ_H36xx ) { | 523 | if (( ib-> model & Model_iPAQ_H36xx ) == Model_iPAQ_H36xx ) { |
524 | b. setKeycode ( ib-> code ); | 524 | b. setKeycode ( ib-> code ); |
525 | b. setUserText ( QObject::tr ( "Button", ib-> utext )); | 525 | b. setUserText ( QObject::tr ( "Button", ib-> utext )); |
526 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); | 526 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); |
527 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); | 527 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); |
528 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); | 528 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); |
529 | d-> m_buttons-> append ( b ); | 529 | d-> m_buttons-> append ( b ); |
530 | } | 530 | } |
531 | } | 531 | } |
532 | reloadButtonMapping ( ); | 532 | reloadButtonMapping ( ); |
533 | 533 | ||
534 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 534 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
535 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 535 | connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT( systemMessage(const QCString&,const QByteArray&))); |
536 | } | 536 | } |
537 | 537 | ||
538 | ODevice::~ODevice ( ) | 538 | ODevice::~ODevice ( ) |
539 | { | 539 | { |
540 | // we leak m_devicebuttons and m_cpu_frequency | 540 | // we leak m_devicebuttons and m_cpu_frequency |
541 | // but it's a singleton and it is not so importantant | 541 | // but it's a singleton and it is not so importantant |
542 | // -zecke | 542 | // -zecke |
543 | delete d; | 543 | delete d; |
544 | } | 544 | } |
545 | 545 | ||
546 | bool ODevice::setSoftSuspend ( bool /*soft*/ ) | 546 | bool ODevice::setSoftSuspend ( bool /*soft*/ ) |
547 | { | 547 | { |
548 | return false; | 548 | return false; |
549 | } | 549 | } |
550 | 550 | ||
551 | //#include <linux/apm_bios.h> | 551 | //#include <linux/apm_bios.h> |
552 | 552 | ||
553 | #define APM_IOC_SUSPEND OD_IO( 'A', 2 ) | 553 | #define APM_IOC_SUSPEND OD_IO( 'A', 2 ) |
554 | 554 | ||
555 | /** | 555 | /** |
556 | * This method will try to suspend the device | 556 | * This method will try to suspend the device |
557 | * It only works if the user is the QWS Server and the apm application | 557 | * It only works if the user is the QWS Server and the apm application |
558 | * is installed. | 558 | * is installed. |
559 | * It tries to suspend and then waits some time cause some distributions | 559 | * It tries to suspend and then waits some time cause some distributions |
560 | * do have asynchronus apm implementations. | 560 | * do have asynchronus apm implementations. |
561 | * This method will either fail and return false or it'll suspend the | 561 | * This method will either fail and return false or it'll suspend the |
562 | * device and return once the device got woken up | 562 | * device and return once the device got woken up |
563 | * | 563 | * |
564 | * @return if the device got suspended | 564 | * @return if the device got suspended |
565 | */ | 565 | */ |
566 | bool ODevice::suspend ( ) | 566 | bool ODevice::suspend ( ) |
567 | { | 567 | { |
568 | qDebug("ODevice::suspend"); | 568 | qDebug("ODevice::suspend"); |
569 | if ( !isQWS( ) ) // only qwsserver is allowed to suspend | 569 | if ( !isQWS( ) ) // only qwsserver is allowed to suspend |
570 | return false; | 570 | return false; |
571 | 571 | ||
572 | if ( d-> m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices | 572 | if ( d-> m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices |
573 | return false; | 573 | return false; |
574 | 574 | ||
575 | bool res = false; | 575 | bool res = false; |
576 | 576 | ||
577 | struct timeval tvs, tvn; | 577 | struct timeval tvs, tvn; |
578 | ::gettimeofday ( &tvs, 0 ); | 578 | ::gettimeofday ( &tvs, 0 ); |
579 | 579 | ||
580 | ::sync ( ); // flush fs caches | 580 | ::sync ( ); // flush fs caches |
581 | res = ( ::system ( "apm --suspend" ) == 0 ); | 581 | res = ( ::system ( "apm --suspend" ) == 0 ); |
582 | 582 | ||
583 | // This is needed because the iPAQ apm implementation is asynchronous and we | 583 | // This is needed because the iPAQ apm implementation is asynchronous and we |
584 | // can not be sure when exactly the device is really suspended | 584 | // can not be sure when exactly the device is really suspended |
585 | // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists. | 585 | // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists. |
586 | 586 | ||
587 | if ( res ) { | 587 | if ( res ) { |
588 | do { // wait at most 1.5 sec: either suspend didn't work or the device resumed | 588 | do { // wait at most 1.5 sec: either suspend didn't work or the device resumed |
589 | ::usleep ( 200 * 1000 ); | 589 | ::usleep ( 200 * 1000 ); |
590 | ::gettimeofday ( &tvn, 0 ); | 590 | ::gettimeofday ( &tvn, 0 ); |
591 | } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 1500 ); | 591 | } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 1500 ); |
592 | } | 592 | } |
593 | 593 | ||
594 | return res; | 594 | return res; |
595 | } | 595 | } |
596 | 596 | ||
597 | //#include <linux/fb.h> better not rely on kernel headers in userspace ... | 597 | //#include <linux/fb.h> better not rely on kernel headers in userspace ... |
598 | 598 | ||
599 | #define FBIOBLANK OD_IO( 'F', 0x11 ) // 0x4611 | 599 | #define FBIOBLANK OD_IO( 'F', 0x11 ) // 0x4611 |
600 | 600 | ||
601 | /* VESA Blanking Levels */ | 601 | /* VESA Blanking Levels */ |
602 | #define VESA_NO_BLANKING 0 | 602 | #define VESA_NO_BLANKING 0 |
603 | #define VESA_VSYNC_SUSPEND 1 | 603 | #define VESA_VSYNC_SUSPEND 1 |
604 | #define VESA_HSYNC_SUSPEND 2 | 604 | #define VESA_HSYNC_SUSPEND 2 |
605 | #define VESA_POWERDOWN 3 | 605 | #define VESA_POWERDOWN 3 |
606 | 606 | ||
607 | /** | 607 | /** |
608 | * This sets the display on or off | 608 | * This sets the display on or off |
609 | */ | 609 | */ |
610 | bool ODevice::setDisplayStatus ( bool on ) | 610 | bool ODevice::setDisplayStatus ( bool on ) |
611 | { | 611 | { |
612 | qDebug("ODevice::setDisplayStatus(%d)", on); | 612 | qDebug("ODevice::setDisplayStatus(%d)", on); |
613 | 613 | ||
614 | if ( d-> m_model == Model_Unknown ) | 614 | if ( d-> m_model == Model_Unknown ) |
615 | return false; | 615 | return false; |
616 | 616 | ||
617 | bool res = false; | 617 | bool res = false; |
618 | int fd; | 618 | int fd; |
619 | 619 | ||
620 | if (( fd = ::open ( "/dev/fb0", O_RDWR )) >= 0 ) { | 620 | if (( fd = ::open ( "/dev/fb0", O_RDWR )) >= 0 ) { |
621 | res = ( ::ioctl ( fd, FBIOBLANK, on ? VESA_NO_BLANKING : VESA_POWERDOWN ) == 0 ); | 621 | res = ( ::ioctl ( fd, FBIOBLANK, on ? VESA_NO_BLANKING : VESA_POWERDOWN ) == 0 ); |
622 | ::close ( fd ); | 622 | ::close ( fd ); |
623 | } | 623 | } |
624 | return res; | 624 | return res; |
625 | } | 625 | } |
626 | 626 | ||
627 | /** | 627 | /** |
628 | * This sets the display brightness | 628 | * This sets the display brightness |
629 | * | 629 | * |
630 | * @param p The brightness to be set on a scale from 0 to 255 | 630 | * @param p The brightness to be set on a scale from 0 to 255 |
631 | * @return success or failure | 631 | * @return success or failure |
@@ -1019,342 +1019,342 @@ void ODevice::virtual_hook(int id, void* data){ | |||
1019 | switch( id ) { | 1019 | switch( id ) { |
1020 | case VIRTUAL_ROTATION:{ | 1020 | case VIRTUAL_ROTATION:{ |
1021 | VirtRotation* rot = reinterpret_cast<VirtRotation*>( data ); | 1021 | VirtRotation* rot = reinterpret_cast<VirtRotation*>( data ); |
1022 | rot->trans = d->m_rotation; | 1022 | rot->trans = d->m_rotation; |
1023 | break; | 1023 | break; |
1024 | } | 1024 | } |
1025 | case VIRTUAL_DIRECTION:{ | 1025 | case VIRTUAL_DIRECTION:{ |
1026 | VirtDirection *dir = reinterpret_cast<VirtDirection*>( data ); | 1026 | VirtDirection *dir = reinterpret_cast<VirtDirection*>( data ); |
1027 | dir->direct = d->m_direction; | 1027 | dir->direct = d->m_direction; |
1028 | break; | 1028 | break; |
1029 | } | 1029 | } |
1030 | case VIRTUAL_HAS_HINGE:{ | 1030 | case VIRTUAL_HAS_HINGE:{ |
1031 | VirtHasHinge *hin = reinterpret_cast<VirtHasHinge*>( data ); | 1031 | VirtHasHinge *hin = reinterpret_cast<VirtHasHinge*>( data ); |
1032 | hin->hasHinge = false; | 1032 | hin->hasHinge = false; |
1033 | break; | 1033 | break; |
1034 | } | 1034 | } |
1035 | case VIRTUAL_HINGE:{ | 1035 | case VIRTUAL_HINGE:{ |
1036 | VirtHingeStatus *hin = reinterpret_cast<VirtHingeStatus*>( data ); | 1036 | VirtHingeStatus *hin = reinterpret_cast<VirtHingeStatus*>( data ); |
1037 | hin->hingeStat = CASE_UNKNOWN; | 1037 | hin->hingeStat = CASE_UNKNOWN; |
1038 | break; | 1038 | break; |
1039 | } | 1039 | } |
1040 | } | 1040 | } |
1041 | } | 1041 | } |
1042 | 1042 | ||
1043 | /************************************************** | 1043 | /************************************************** |
1044 | * | 1044 | * |
1045 | * Yopy 3500/3700 | 1045 | * Yopy 3500/3700 |
1046 | * | 1046 | * |
1047 | **************************************************/ | 1047 | **************************************************/ |
1048 | 1048 | ||
1049 | bool Yopy::isYopy ( ) | 1049 | bool Yopy::isYopy ( ) |
1050 | { | 1050 | { |
1051 | QFile f( "/proc/cpuinfo" ); | 1051 | QFile f( "/proc/cpuinfo" ); |
1052 | if ( f. open ( IO_ReadOnly ) ) { | 1052 | if ( f. open ( IO_ReadOnly ) ) { |
1053 | QTextStream ts ( &f ); | 1053 | QTextStream ts ( &f ); |
1054 | QString line; | 1054 | QString line; |
1055 | while( line = ts. readLine ( ) ) { | 1055 | while( line = ts. readLine ( ) ) { |
1056 | if ( line. left ( 8 ) == "Hardware" ) { | 1056 | if ( line. left ( 8 ) == "Hardware" ) { |
1057 | int loc = line. find ( ":" ); | 1057 | int loc = line. find ( ":" ); |
1058 | if ( loc != -1 ) { | 1058 | if ( loc != -1 ) { |
1059 | QString model = | 1059 | QString model = |
1060 | line. mid ( loc + 2 ). simplifyWhiteSpace( ); | 1060 | line. mid ( loc + 2 ). simplifyWhiteSpace( ); |
1061 | return ( model == "Yopy" ); | 1061 | return ( model == "Yopy" ); |
1062 | } | 1062 | } |
1063 | } | 1063 | } |
1064 | } | 1064 | } |
1065 | } | 1065 | } |
1066 | return false; | 1066 | return false; |
1067 | } | 1067 | } |
1068 | 1068 | ||
1069 | void Yopy::init ( ) | 1069 | void Yopy::init ( ) |
1070 | { | 1070 | { |
1071 | d-> m_vendorstr = "G.Mate"; | 1071 | d-> m_vendorstr = "G.Mate"; |
1072 | d-> m_vendor = Vendor_GMate; | 1072 | d-> m_vendor = Vendor_GMate; |
1073 | d-> m_modelstr = "Yopy3700"; | 1073 | d-> m_modelstr = "Yopy3700"; |
1074 | d-> m_model = Model_Yopy_3700; | 1074 | d-> m_model = Model_Yopy_3700; |
1075 | d-> m_rotation = Rot0; | 1075 | d-> m_rotation = Rot0; |
1076 | 1076 | ||
1077 | d-> m_systemstr = "Linupy"; | 1077 | d-> m_systemstr = "Linupy"; |
1078 | d-> m_system = System_Linupy; | 1078 | d-> m_system = System_Linupy; |
1079 | 1079 | ||
1080 | QFile f ( "/etc/issue" ); | 1080 | QFile f ( "/etc/issue" ); |
1081 | if ( f. open ( IO_ReadOnly )) { | 1081 | if ( f. open ( IO_ReadOnly )) { |
1082 | QTextStream ts ( &f ); | 1082 | QTextStream ts ( &f ); |
1083 | ts.readLine(); | 1083 | ts.readLine(); |
1084 | d-> m_sysverstr = ts. readLine ( ); | 1084 | d-> m_sysverstr = ts. readLine ( ); |
1085 | f. close ( ); | 1085 | f. close ( ); |
1086 | } | 1086 | } |
1087 | } | 1087 | } |
1088 | 1088 | ||
1089 | void Yopy::initButtons ( ) | 1089 | void Yopy::initButtons ( ) |
1090 | { | 1090 | { |
1091 | if ( d-> m_buttons ) | 1091 | if ( d-> m_buttons ) |
1092 | return; | 1092 | return; |
1093 | 1093 | ||
1094 | d-> m_buttons = new QValueList <ODeviceButton>; | 1094 | d-> m_buttons = new QValueList <ODeviceButton>; |
1095 | 1095 | ||
1096 | for (uint i = 0; i < ( sizeof( yopy_buttons ) / sizeof(yopy_button)); i++) { | 1096 | for (uint i = 0; i < ( sizeof( yopy_buttons ) / sizeof(yopy_button)); i++) { |
1097 | 1097 | ||
1098 | yopy_button *ib = yopy_buttons + i; | 1098 | yopy_button *ib = yopy_buttons + i; |
1099 | 1099 | ||
1100 | ODeviceButton b; | 1100 | ODeviceButton b; |
1101 | 1101 | ||
1102 | b. setKeycode ( ib-> code ); | 1102 | b. setKeycode ( ib-> code ); |
1103 | b. setUserText ( QObject::tr ( "Button", ib-> utext )); | 1103 | b. setUserText ( QObject::tr ( "Button", ib-> utext )); |
1104 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); | 1104 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); |
1105 | b. setFactoryPresetPressedAction | 1105 | b. setFactoryPresetPressedAction |
1106 | (OQCopMessage(makeChannel(ib->fpressedservice), ib->fpressedaction)); | 1106 | (OQCopMessage(makeChannel(ib->fpressedservice), ib->fpressedaction)); |
1107 | b. setFactoryPresetHeldAction | 1107 | b. setFactoryPresetHeldAction |
1108 | (OQCopMessage(makeChannel(ib->fheldservice), ib->fheldaction)); | 1108 | (OQCopMessage(makeChannel(ib->fheldservice), ib->fheldaction)); |
1109 | 1109 | ||
1110 | d-> m_buttons-> append ( b ); | 1110 | d-> m_buttons-> append ( b ); |
1111 | } | 1111 | } |
1112 | reloadButtonMapping ( ); | 1112 | reloadButtonMapping ( ); |
1113 | 1113 | ||
1114 | QCopChannel *sysch = new QCopChannel("QPE/System", this); | 1114 | QCopChannel *sysch = new QCopChannel("QPE/System", this); |
1115 | connect(sysch, SIGNAL(received(const QCString &, const QByteArray & )), | 1115 | connect(sysch, SIGNAL(received(const QCString&,const QByteArray&)), |
1116 | this, SLOT(systemMessage(const QCString &, const QByteArray & ))); | 1116 | this, SLOT(systemMessage(const QCString&,const QByteArray&))); |
1117 | } | 1117 | } |
1118 | 1118 | ||
1119 | bool Yopy::suspend() | 1119 | bool Yopy::suspend() |
1120 | { | 1120 | { |
1121 | /* Opie for Yopy does not implement its own power management at the | 1121 | /* Opie for Yopy does not implement its own power management at the |
1122 | moment. The public version runs parallel to X, and relies on the | 1122 | moment. The public version runs parallel to X, and relies on the |
1123 | existing power management features. */ | 1123 | existing power management features. */ |
1124 | return false; | 1124 | return false; |
1125 | } | 1125 | } |
1126 | 1126 | ||
1127 | bool Yopy::setDisplayBrightness(int bright) | 1127 | bool Yopy::setDisplayBrightness(int bright) |
1128 | { | 1128 | { |
1129 | /* The code here works, but is disabled as the current version runs | 1129 | /* The code here works, but is disabled as the current version runs |
1130 | parallel to X, and relies on the existing backlight demon. */ | 1130 | parallel to X, and relies on the existing backlight demon. */ |
1131 | #if 0 | 1131 | #if 0 |
1132 | if ( QFile::exists("/proc/sys/pm/light") ) { | 1132 | if ( QFile::exists("/proc/sys/pm/light") ) { |
1133 | int fd = ::open("/proc/sys/pm/light", O_WRONLY); | 1133 | int fd = ::open("/proc/sys/pm/light", O_WRONLY); |
1134 | if (fd >= 0 ) { | 1134 | if (fd >= 0 ) { |
1135 | if (bright) | 1135 | if (bright) |
1136 | ::write(fd, "1\n", 2); | 1136 | ::write(fd, "1\n", 2); |
1137 | else | 1137 | else |
1138 | ::write(fd, "0\n", 2); | 1138 | ::write(fd, "0\n", 2); |
1139 | ::close(fd); | 1139 | ::close(fd); |
1140 | return true; | 1140 | return true; |
1141 | } | 1141 | } |
1142 | } | 1142 | } |
1143 | #endif | 1143 | #endif |
1144 | return false; | 1144 | return false; |
1145 | } | 1145 | } |
1146 | 1146 | ||
1147 | int Yopy::displayBrightnessResolution() const | 1147 | int Yopy::displayBrightnessResolution() const |
1148 | { | 1148 | { |
1149 | return 2; | 1149 | return 2; |
1150 | } | 1150 | } |
1151 | 1151 | ||
1152 | /************************************************** | 1152 | /************************************************** |
1153 | * | 1153 | * |
1154 | * iPAQ | 1154 | * iPAQ |
1155 | * | 1155 | * |
1156 | **************************************************/ | 1156 | **************************************************/ |
1157 | 1157 | ||
1158 | void iPAQ::init ( ) | 1158 | void iPAQ::init ( ) |
1159 | { | 1159 | { |
1160 | d-> m_vendorstr = "HP"; | 1160 | d-> m_vendorstr = "HP"; |
1161 | d-> m_vendor = Vendor_HP; | 1161 | d-> m_vendor = Vendor_HP; |
1162 | 1162 | ||
1163 | QFile f ( "/proc/hal/model" ); | 1163 | QFile f ( "/proc/hal/model" ); |
1164 | 1164 | ||
1165 | if ( f. open ( IO_ReadOnly )) { | 1165 | if ( f. open ( IO_ReadOnly )) { |
1166 | QTextStream ts ( &f ); | 1166 | QTextStream ts ( &f ); |
1167 | 1167 | ||
1168 | d-> m_modelstr = "H" + ts. readLine ( ); | 1168 | d-> m_modelstr = "H" + ts. readLine ( ); |
1169 | 1169 | ||
1170 | if ( d-> m_modelstr == "H3100" ) | 1170 | if ( d-> m_modelstr == "H3100" ) |
1171 | d-> m_model = Model_iPAQ_H31xx; | 1171 | d-> m_model = Model_iPAQ_H31xx; |
1172 | else if ( d-> m_modelstr == "H3600" ) | 1172 | else if ( d-> m_modelstr == "H3600" ) |
1173 | d-> m_model = Model_iPAQ_H36xx; | 1173 | d-> m_model = Model_iPAQ_H36xx; |
1174 | else if ( d-> m_modelstr == "H3700" ) | 1174 | else if ( d-> m_modelstr == "H3700" ) |
1175 | d-> m_model = Model_iPAQ_H37xx; | 1175 | d-> m_model = Model_iPAQ_H37xx; |
1176 | else if ( d-> m_modelstr == "H3800" ) | 1176 | else if ( d-> m_modelstr == "H3800" ) |
1177 | d-> m_model = Model_iPAQ_H38xx; | 1177 | d-> m_model = Model_iPAQ_H38xx; |
1178 | else if ( d-> m_modelstr == "H3900" ) | 1178 | else if ( d-> m_modelstr == "H3900" ) |
1179 | d-> m_model = Model_iPAQ_H39xx; | 1179 | d-> m_model = Model_iPAQ_H39xx; |
1180 | else if ( d-> m_modelstr == "H5400" ) | 1180 | else if ( d-> m_modelstr == "H5400" ) |
1181 | d-> m_model = Model_iPAQ_H5xxx; | 1181 | d-> m_model = Model_iPAQ_H5xxx; |
1182 | else | 1182 | else |
1183 | d-> m_model = Model_Unknown; | 1183 | d-> m_model = Model_Unknown; |
1184 | 1184 | ||
1185 | f. close ( ); | 1185 | f. close ( ); |
1186 | } | 1186 | } |
1187 | 1187 | ||
1188 | switch ( d-> m_model ) { | 1188 | switch ( d-> m_model ) { |
1189 | case Model_iPAQ_H31xx: | 1189 | case Model_iPAQ_H31xx: |
1190 | case Model_iPAQ_H38xx: | 1190 | case Model_iPAQ_H38xx: |
1191 | d-> m_rotation = Rot90; | 1191 | d-> m_rotation = Rot90; |
1192 | break; | 1192 | break; |
1193 | case Model_iPAQ_H36xx: | 1193 | case Model_iPAQ_H36xx: |
1194 | case Model_iPAQ_H37xx: | 1194 | case Model_iPAQ_H37xx: |
1195 | case Model_iPAQ_H39xx: | 1195 | case Model_iPAQ_H39xx: |
1196 | 1196 | ||
1197 | default: | 1197 | default: |
1198 | d-> m_rotation = Rot270; | 1198 | d-> m_rotation = Rot270; |
1199 | break; | 1199 | break; |
1200 | case Model_iPAQ_H5xxx: | 1200 | case Model_iPAQ_H5xxx: |
1201 | d-> m_rotation = Rot0; | 1201 | d-> m_rotation = Rot0; |
1202 | } | 1202 | } |
1203 | 1203 | ||
1204 | f. setName ( "/etc/familiar-version" ); | 1204 | f. setName ( "/etc/familiar-version" ); |
1205 | if ( f. open ( IO_ReadOnly )) { | 1205 | if ( f. open ( IO_ReadOnly )) { |
1206 | d-> m_systemstr = "Familiar"; | 1206 | d-> m_systemstr = "Familiar"; |
1207 | d-> m_system = System_Familiar; | 1207 | d-> m_system = System_Familiar; |
1208 | 1208 | ||
1209 | QTextStream ts ( &f ); | 1209 | QTextStream ts ( &f ); |
1210 | d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); | 1210 | d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); |
1211 | 1211 | ||
1212 | f. close ( ); | 1212 | f. close ( ); |
1213 | } else { | 1213 | } else { |
1214 | f. setName ( "/etc/oz_version" ); | 1214 | f. setName ( "/etc/oz_version" ); |
1215 | 1215 | ||
1216 | if ( f. open ( IO_ReadOnly )) { | 1216 | if ( f. open ( IO_ReadOnly )) { |
1217 | d-> m_systemstr = "OpenEmbedded/iPaq"; | 1217 | d-> m_systemstr = "OpenEmbedded/iPaq"; |
1218 | d-> m_system = System_Familiar; | 1218 | d-> m_system = System_Familiar; |
1219 | 1219 | ||
1220 | QTextStream ts ( &f ); | 1220 | QTextStream ts ( &f ); |
1221 | ts.setDevice ( &f ); | 1221 | ts.setDevice ( &f ); |
1222 | d-> m_sysverstr = ts. readLine ( ); | 1222 | d-> m_sysverstr = ts. readLine ( ); |
1223 | f. close ( ); | 1223 | f. close ( ); |
1224 | } | 1224 | } |
1225 | } | 1225 | } |
1226 | 1226 | ||
1227 | 1227 | ||
1228 | 1228 | ||
1229 | 1229 | ||
1230 | 1230 | ||
1231 | m_leds [0] = m_leds [1] = Led_Off; | 1231 | m_leds [0] = m_leds [1] = Led_Off; |
1232 | 1232 | ||
1233 | m_power_timer = 0; | 1233 | m_power_timer = 0; |
1234 | 1234 | ||
1235 | } | 1235 | } |
1236 | 1236 | ||
1237 | void iPAQ::initButtons ( ) | 1237 | void iPAQ::initButtons ( ) |
1238 | { | 1238 | { |
1239 | if ( d-> m_buttons ) | 1239 | if ( d-> m_buttons ) |
1240 | return; | 1240 | return; |
1241 | 1241 | ||
1242 | if ( isQWS( ) ) | 1242 | if ( isQWS( ) ) |
1243 | QWSServer::setKeyboardFilter ( this ); | 1243 | QWSServer::setKeyboardFilter ( this ); |
1244 | 1244 | ||
1245 | d-> m_buttons = new QValueList <ODeviceButton>; | 1245 | d-> m_buttons = new QValueList <ODeviceButton>; |
1246 | 1246 | ||
1247 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { | 1247 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { |
1248 | i_button *ib = ipaq_buttons + i; | 1248 | i_button *ib = ipaq_buttons + i; |
1249 | ODeviceButton b; | 1249 | ODeviceButton b; |
1250 | 1250 | ||
1251 | if (( ib-> model & d-> m_model ) == d-> m_model ) { | 1251 | if (( ib-> model & d-> m_model ) == d-> m_model ) { |
1252 | b. setKeycode ( ib-> code ); | 1252 | b. setKeycode ( ib-> code ); |
1253 | b. setUserText ( QObject::tr ( "Button", ib-> utext )); | 1253 | b. setUserText ( QObject::tr ( "Button", ib-> utext )); |
1254 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); | 1254 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); |
1255 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); | 1255 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); |
1256 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); | 1256 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); |
1257 | 1257 | ||
1258 | d-> m_buttons-> append ( b ); | 1258 | d-> m_buttons-> append ( b ); |
1259 | } | 1259 | } |
1260 | } | 1260 | } |
1261 | reloadButtonMapping ( ); | 1261 | reloadButtonMapping ( ); |
1262 | 1262 | ||
1263 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 1263 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
1264 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 1264 | connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT( systemMessage(const QCString&,const QByteArray&))); |
1265 | } | 1265 | } |
1266 | 1266 | ||
1267 | 1267 | ||
1268 | //#include <linux/h3600_ts.h> // including kernel headers is evil ... | 1268 | //#include <linux/h3600_ts.h> // including kernel headers is evil ... |
1269 | 1269 | ||
1270 | typedef struct { | 1270 | typedef struct { |
1271 | unsigned char OffOnBlink; /* 0=off 1=on 2=Blink */ | 1271 | unsigned char OffOnBlink; /* 0=off 1=on 2=Blink */ |
1272 | unsigned char TotalTime; /* Units of 5 seconds */ | 1272 | unsigned char TotalTime; /* Units of 5 seconds */ |
1273 | unsigned char OnTime; /* units of 100m/s */ | 1273 | unsigned char OnTime; /* units of 100m/s */ |
1274 | unsigned char OffTime; /* units of 100m/s */ | 1274 | unsigned char OffTime; /* units of 100m/s */ |
1275 | } LED_IN; | 1275 | } LED_IN; |
1276 | 1276 | ||
1277 | typedef struct { | 1277 | typedef struct { |
1278 | unsigned char mode; | 1278 | unsigned char mode; |
1279 | unsigned char pwr; | 1279 | unsigned char pwr; |
1280 | unsigned char brightness; | 1280 | unsigned char brightness; |
1281 | } FLITE_IN; | 1281 | } FLITE_IN; |
1282 | 1282 | ||
1283 | #define LED_ON OD_IOW( 'f', 5, LED_IN ) | 1283 | #define LED_ON OD_IOW( 'f', 5, LED_IN ) |
1284 | #define FLITE_ON OD_IOW( 'f', 7, FLITE_IN ) | 1284 | #define FLITE_ON OD_IOW( 'f', 7, FLITE_IN ) |
1285 | 1285 | ||
1286 | 1286 | ||
1287 | QValueList <OLed> iPAQ::ledList ( ) const | 1287 | QValueList <OLed> iPAQ::ledList ( ) const |
1288 | { | 1288 | { |
1289 | QValueList <OLed> vl; | 1289 | QValueList <OLed> vl; |
1290 | vl << Led_Power; | 1290 | vl << Led_Power; |
1291 | 1291 | ||
1292 | if ( d-> m_model == Model_iPAQ_H38xx ) | 1292 | if ( d-> m_model == Model_iPAQ_H38xx ) |
1293 | vl << Led_BlueTooth; | 1293 | vl << Led_BlueTooth; |
1294 | return vl; | 1294 | return vl; |
1295 | } | 1295 | } |
1296 | 1296 | ||
1297 | QValueList <OLedState> iPAQ::ledStateList ( OLed l ) const | 1297 | QValueList <OLedState> iPAQ::ledStateList ( OLed l ) const |
1298 | { | 1298 | { |
1299 | QValueList <OLedState> vl; | 1299 | QValueList <OLedState> vl; |
1300 | 1300 | ||
1301 | if ( l == Led_Power ) | 1301 | if ( l == Led_Power ) |
1302 | vl << Led_Off << Led_On << Led_BlinkSlow << Led_BlinkFast; | 1302 | vl << Led_Off << Led_On << Led_BlinkSlow << Led_BlinkFast; |
1303 | else if ( l == Led_BlueTooth && d-> m_model == Model_iPAQ_H38xx ) | 1303 | else if ( l == Led_BlueTooth && d-> m_model == Model_iPAQ_H38xx ) |
1304 | vl << Led_Off; // << Led_On << ??? | 1304 | vl << Led_Off; // << Led_On << ??? |
1305 | 1305 | ||
1306 | return vl; | 1306 | return vl; |
1307 | } | 1307 | } |
1308 | 1308 | ||
1309 | OLedState iPAQ::ledState ( OLed l ) const | 1309 | OLedState iPAQ::ledState ( OLed l ) const |
1310 | { | 1310 | { |
1311 | switch ( l ) { | 1311 | switch ( l ) { |
1312 | case Led_Power: | 1312 | case Led_Power: |
1313 | return m_leds [0]; | 1313 | return m_leds [0]; |
1314 | case Led_BlueTooth: | 1314 | case Led_BlueTooth: |
1315 | return m_leds [1]; | 1315 | return m_leds [1]; |
1316 | default: | 1316 | default: |
1317 | return Led_Off; | 1317 | return Led_Off; |
1318 | } | 1318 | } |
1319 | } | 1319 | } |
1320 | 1320 | ||
1321 | bool iPAQ::setLedState ( OLed l, OLedState st ) | 1321 | bool iPAQ::setLedState ( OLed l, OLedState st ) |
1322 | { | 1322 | { |
1323 | static int fd = ::open ( "/dev/touchscreen/0", O_RDWR | O_NONBLOCK ); | 1323 | static int fd = ::open ( "/dev/touchscreen/0", O_RDWR | O_NONBLOCK ); |
1324 | 1324 | ||
1325 | if ( l == Led_Power ) { | 1325 | if ( l == Led_Power ) { |
1326 | if ( fd >= 0 ) { | 1326 | if ( fd >= 0 ) { |
1327 | LED_IN leds; | 1327 | LED_IN leds; |
1328 | ::memset ( &leds, 0, sizeof( leds )); | 1328 | ::memset ( &leds, 0, sizeof( leds )); |
1329 | leds. TotalTime = 0; | 1329 | leds. TotalTime = 0; |
1330 | leds. OnTime = 0; | 1330 | leds. OnTime = 0; |
1331 | leds. OffTime = 1; | 1331 | leds. OffTime = 1; |
1332 | leds. OffOnBlink = 2; | 1332 | leds. OffOnBlink = 2; |
1333 | 1333 | ||
1334 | switch ( st ) { | 1334 | switch ( st ) { |
1335 | case Led_Off : leds. OffOnBlink = 0; break; | 1335 | case Led_Off : leds. OffOnBlink = 0; break; |
1336 | case Led_On : leds. OffOnBlink = 1; break; | 1336 | case Led_On : leds. OffOnBlink = 1; break; |
1337 | case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; | 1337 | case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; |
1338 | case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; | 1338 | case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; |
1339 | } | 1339 | } |
1340 | 1340 | ||
1341 | if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) { | 1341 | if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) { |
1342 | m_leds [0] = st; | 1342 | m_leds [0] = st; |
1343 | return true; | 1343 | return true; |
1344 | } | 1344 | } |
1345 | } | 1345 | } |
1346 | } | 1346 | } |
1347 | return false; | 1347 | return false; |
1348 | } | 1348 | } |
1349 | 1349 | ||
1350 | 1350 | ||
1351 | bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) | 1351 | bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) |
1352 | { | 1352 | { |
1353 | int newkeycode = keycode; | 1353 | int newkeycode = keycode; |
1354 | 1354 | ||
1355 | switch ( keycode ) { | 1355 | switch ( keycode ) { |
1356 | // H38xx/H39xx have no "Q" key anymore - this is now the Mail key | 1356 | // H38xx/H39xx have no "Q" key anymore - this is now the Mail key |
1357 | case HardKey_Menu: { | 1357 | case HardKey_Menu: { |
1358 | if (( d-> m_model == Model_iPAQ_H38xx ) || | 1358 | if (( d-> m_model == Model_iPAQ_H38xx ) || |
1359 | ( d-> m_model == Model_iPAQ_H39xx ) || | 1359 | ( d-> m_model == Model_iPAQ_H39xx ) || |
1360 | ( d-> m_model == Model_iPAQ_H5xxx)) { | 1360 | ( d-> m_model == Model_iPAQ_H5xxx)) { |
@@ -1654,194 +1654,194 @@ void Zaurus::init ( ) | |||
1654 | } | 1654 | } |
1655 | else { | 1655 | else { |
1656 | d-> m_systemstr = "Zaurus"; | 1656 | d-> m_systemstr = "Zaurus"; |
1657 | d-> m_system = System_Zaurus; | 1657 | d-> m_system = System_Zaurus; |
1658 | } | 1658 | } |
1659 | 1659 | ||
1660 | f. setName ( "/proc/cpuinfo" ); | 1660 | f. setName ( "/proc/cpuinfo" ); |
1661 | if ( f. open ( IO_ReadOnly ) ) { | 1661 | if ( f. open ( IO_ReadOnly ) ) { |
1662 | QTextStream ts ( &f ); | 1662 | QTextStream ts ( &f ); |
1663 | QString line; | 1663 | QString line; |
1664 | while( line = ts. readLine ( ) ) { | 1664 | while( line = ts. readLine ( ) ) { |
1665 | if ( line. left ( 8 ) == "Hardware" ) | 1665 | if ( line. left ( 8 ) == "Hardware" ) |
1666 | break; | 1666 | break; |
1667 | } | 1667 | } |
1668 | int loc = line. find ( ":" ); | 1668 | int loc = line. find ( ":" ); |
1669 | if ( loc != -1 ) | 1669 | if ( loc != -1 ) |
1670 | model = line. mid ( loc + 2 ). simplifyWhiteSpace( ); | 1670 | model = line. mid ( loc + 2 ). simplifyWhiteSpace( ); |
1671 | } | 1671 | } |
1672 | 1672 | ||
1673 | if ( model == "SHARP Corgi" ) { | 1673 | if ( model == "SHARP Corgi" ) { |
1674 | d-> m_model = Model_Zaurus_SLC7x0; | 1674 | d-> m_model = Model_Zaurus_SLC7x0; |
1675 | d-> m_modelstr = "Zaurus SL-C700"; | 1675 | d-> m_modelstr = "Zaurus SL-C700"; |
1676 | } else if ( model == "SHARP Shepherd" ) { | 1676 | } else if ( model == "SHARP Shepherd" ) { |
1677 | d-> m_model = Model_Zaurus_SLC7x0; | 1677 | d-> m_model = Model_Zaurus_SLC7x0; |
1678 | d-> m_modelstr = "Zaurus SL-C750"; | 1678 | d-> m_modelstr = "Zaurus SL-C750"; |
1679 | } else if ( model == "SHARP Husky" ) { | 1679 | } else if ( model == "SHARP Husky" ) { |
1680 | d-> m_model = Model_Zaurus_SLC7x0; | 1680 | d-> m_model = Model_Zaurus_SLC7x0; |
1681 | d-> m_modelstr = "Zaurus SL-C760"; | 1681 | d-> m_modelstr = "Zaurus SL-C760"; |
1682 | } else if ( model == "SHARP Poodle" ) { | 1682 | } else if ( model == "SHARP Poodle" ) { |
1683 | d-> m_model = Model_Zaurus_SLB600; | 1683 | d-> m_model = Model_Zaurus_SLB600; |
1684 | d-> m_modelstr = "Zaurus SL-B500 or SL-5600"; | 1684 | d-> m_modelstr = "Zaurus SL-B500 or SL-5600"; |
1685 | } else if ( model == "Sharp-Collie" || model == "Collie" ) { | 1685 | } else if ( model == "Sharp-Collie" || model == "Collie" ) { |
1686 | d-> m_model = Model_Zaurus_SL5500; | 1686 | d-> m_model = Model_Zaurus_SL5500; |
1687 | d-> m_modelstr = "Zaurus SL-5500 or SL-5000d"; | 1687 | d-> m_modelstr = "Zaurus SL-5500 or SL-5000d"; |
1688 | } else { | 1688 | } else { |
1689 | d-> m_model = Model_Zaurus_SL5500; | 1689 | d-> m_model = Model_Zaurus_SL5500; |
1690 | d-> m_modelstr = "Zaurus (Model unknown)"; | 1690 | d-> m_modelstr = "Zaurus (Model unknown)"; |
1691 | } | 1691 | } |
1692 | 1692 | ||
1693 | bool flipstate = false; | 1693 | bool flipstate = false; |
1694 | switch ( d-> m_model ) { | 1694 | switch ( d-> m_model ) { |
1695 | case Model_Zaurus_SLA300: | 1695 | case Model_Zaurus_SLA300: |
1696 | d-> m_rotation = Rot0; | 1696 | d-> m_rotation = Rot0; |
1697 | break; | 1697 | break; |
1698 | case Model_Zaurus_SLC7x0: | 1698 | case Model_Zaurus_SLC7x0: |
1699 | d-> m_rotation = rotation(); | 1699 | d-> m_rotation = rotation(); |
1700 | d-> m_direction = direction(); | 1700 | d-> m_direction = direction(); |
1701 | break; | 1701 | break; |
1702 | case Model_Zaurus_SLB600: | 1702 | case Model_Zaurus_SLB600: |
1703 | case Model_Zaurus_SL5500: | 1703 | case Model_Zaurus_SL5500: |
1704 | case Model_Zaurus_SL5000: | 1704 | case Model_Zaurus_SL5000: |
1705 | default: | 1705 | default: |
1706 | d-> m_rotation = Rot270; | 1706 | d-> m_rotation = Rot270; |
1707 | break; | 1707 | break; |
1708 | } | 1708 | } |
1709 | m_leds [0] = Led_Off; | 1709 | m_leds [0] = Led_Off; |
1710 | } | 1710 | } |
1711 | 1711 | ||
1712 | void Zaurus::initButtons ( ) | 1712 | void Zaurus::initButtons ( ) |
1713 | { | 1713 | { |
1714 | if ( d-> m_buttons ) | 1714 | if ( d-> m_buttons ) |
1715 | return; | 1715 | return; |
1716 | 1716 | ||
1717 | d-> m_buttons = new QValueList <ODeviceButton>; | 1717 | d-> m_buttons = new QValueList <ODeviceButton>; |
1718 | 1718 | ||
1719 | struct z_button * pz_buttons; | 1719 | struct z_button * pz_buttons; |
1720 | int buttoncount; | 1720 | int buttoncount; |
1721 | switch ( d-> m_model ) { | 1721 | switch ( d-> m_model ) { |
1722 | case Model_Zaurus_SLC7x0: | 1722 | case Model_Zaurus_SLC7x0: |
1723 | pz_buttons = z_buttons_c700; | 1723 | pz_buttons = z_buttons_c700; |
1724 | buttoncount = ARRAY_SIZE(z_buttons_c700); | 1724 | buttoncount = ARRAY_SIZE(z_buttons_c700); |
1725 | break; | 1725 | break; |
1726 | default: | 1726 | default: |
1727 | pz_buttons = z_buttons; | 1727 | pz_buttons = z_buttons; |
1728 | buttoncount = ARRAY_SIZE(z_buttons); | 1728 | buttoncount = ARRAY_SIZE(z_buttons); |
1729 | break; | 1729 | break; |
1730 | } | 1730 | } |
1731 | 1731 | ||
1732 | for ( int i = 0; i < buttoncount; i++ ) { | 1732 | for ( int i = 0; i < buttoncount; i++ ) { |
1733 | struct z_button *zb = pz_buttons + i; | 1733 | struct z_button *zb = pz_buttons + i; |
1734 | ODeviceButton b; | 1734 | ODeviceButton b; |
1735 | 1735 | ||
1736 | b. setKeycode ( zb-> code ); | 1736 | b. setKeycode ( zb-> code ); |
1737 | b. setUserText ( QObject::tr ( "Button", zb-> utext )); | 1737 | b. setUserText ( QObject::tr ( "Button", zb-> utext )); |
1738 | b. setPixmap ( Resource::loadPixmap ( zb-> pix )); | 1738 | b. setPixmap ( Resource::loadPixmap ( zb-> pix )); |
1739 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( zb-> fpressedservice ), | 1739 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( zb-> fpressedservice ), |
1740 | zb-> fpressedaction )); | 1740 | zb-> fpressedaction )); |
1741 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( zb-> fheldservice ), | 1741 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( zb-> fheldservice ), |
1742 | zb-> fheldaction )); | 1742 | zb-> fheldaction )); |
1743 | 1743 | ||
1744 | d-> m_buttons-> append ( b ); | 1744 | d-> m_buttons-> append ( b ); |
1745 | } | 1745 | } |
1746 | 1746 | ||
1747 | reloadButtonMapping ( ); | 1747 | reloadButtonMapping ( ); |
1748 | 1748 | ||
1749 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 1749 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
1750 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), | 1750 | connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), |
1751 | this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 1751 | this, SLOT( systemMessage(const QCString&,const QByteArray&))); |
1752 | } | 1752 | } |
1753 | 1753 | ||
1754 | #include <unistd.h> | 1754 | #include <unistd.h> |
1755 | #include <fcntl.h> | 1755 | #include <fcntl.h> |
1756 | #include <sys/ioctl.h> | 1756 | #include <sys/ioctl.h> |
1757 | 1757 | ||
1758 | //#include <asm/sharp_char.h> // including kernel headers is evil ... | 1758 | //#include <asm/sharp_char.h> // including kernel headers is evil ... |
1759 | 1759 | ||
1760 | #define SHARP_DEV_IOCTL_COMMAND_START 0x5680 | 1760 | #define SHARP_DEV_IOCTL_COMMAND_START 0x5680 |
1761 | 1761 | ||
1762 | #defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) | 1762 | #defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) |
1763 | #define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) | 1763 | #define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) |
1764 | 1764 | ||
1765 | #define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ | 1765 | #define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ |
1766 | #define SHARP_BUZ_KEYSOUND 2 /* key sound */ | 1766 | #define SHARP_BUZ_KEYSOUND 2 /* key sound */ |
1767 | #define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ | 1767 | #define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ |
1768 | 1768 | ||
1769 | /* --- for SHARP_BUZZER device --- */ | 1769 | /* --- for SHARP_BUZZER device --- */ |
1770 | 1770 | ||
1771 | //#defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) | 1771 | //#defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) |
1772 | //#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) | 1772 | //#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) |
1773 | 1773 | ||
1774 | #define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1) | 1774 | #define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1) |
1775 | #define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2) | 1775 | #define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2) |
1776 | #define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3) | 1776 | #define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3) |
1777 | #define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4) | 1777 | #define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4) |
1778 | #define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5) | 1778 | #define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5) |
1779 | 1779 | ||
1780 | //#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ | 1780 | //#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ |
1781 | //#define SHARP_BUZ_KEYSOUND 2 /* key sound */ | 1781 | //#define SHARP_BUZ_KEYSOUND 2 /* key sound */ |
1782 | 1782 | ||
1783 | //#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */ | 1783 | //#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */ |
1784 | //#define SHARP_PDA_WARNSOUND 4 /* warning occurred */ | 1784 | //#define SHARP_PDA_WARNSOUND 4 /* warning occurred */ |
1785 | //#define SHARP_PDA_ERRORSOUND 5 /* error occurred */ | 1785 | //#define SHARP_PDA_ERRORSOUND 5 /* error occurred */ |
1786 | //#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */ | 1786 | //#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */ |
1787 | //#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */ | 1787 | //#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */ |
1788 | //#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */ | 1788 | //#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */ |
1789 | //#define SHARP_PDA_APPSTART 9 /* application start */ | 1789 | //#define SHARP_PDA_APPSTART 9 /* application start */ |
1790 | //#define SHARP_PDA_APPQUIT 10 /* application ends */ | 1790 | //#define SHARP_PDA_APPQUIT 10 /* application ends */ |
1791 | 1791 | ||
1792 | //#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ | 1792 | //#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ |
1793 | //#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */ | 1793 | //#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */ |
1794 | //#define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */ | 1794 | //#define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */ |
1795 | //#define SHARP_BUZ_GOT_MAIL 14 /* mail sound */ | 1795 | //#define SHARP_BUZ_GOT_MAIL 14 /* mail sound */ |
1796 | // | 1796 | // |
1797 | 1797 | ||
1798 | #defineSHARP_LED_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) | 1798 | #defineSHARP_LED_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) |
1799 | #define SHARP_LED_SETSTATUS (SHARP_LED_IOCTL_START+1) | 1799 | #define SHARP_LED_SETSTATUS (SHARP_LED_IOCTL_START+1) |
1800 | 1800 | ||
1801 | #define SHARP_IOCTL_GET_ROTATION 0x413c | 1801 | #define SHARP_IOCTL_GET_ROTATION 0x413c |
1802 | 1802 | ||
1803 | typedef struct sharp_led_status { | 1803 | typedef struct sharp_led_status { |
1804 | int which; /* select which LED status is wanted. */ | 1804 | int which; /* select which LED status is wanted. */ |
1805 | int status; /* set new led status if you call SHARP_LED_SETSTATUS */ | 1805 | int status; /* set new led status if you call SHARP_LED_SETSTATUS */ |
1806 | } sharp_led_status; | 1806 | } sharp_led_status; |
1807 | 1807 | ||
1808 | #define SHARP_LED_MAIL_EXISTS 9 /* mail status (exists or not) */ | 1808 | #define SHARP_LED_MAIL_EXISTS 9 /* mail status (exists or not) */ |
1809 | 1809 | ||
1810 | #define LED_MAIL_NO_UNREAD_MAIL 0 /* for SHARP_LED_MAIL_EXISTS */ | 1810 | #define LED_MAIL_NO_UNREAD_MAIL 0 /* for SHARP_LED_MAIL_EXISTS */ |
1811 | #define LED_MAIL_NEWMAIL_EXISTS 1 /* for SHARP_LED_MAIL_EXISTS */ | 1811 | #define LED_MAIL_NEWMAIL_EXISTS 1 /* for SHARP_LED_MAIL_EXISTS */ |
1812 | #define LED_MAIL_UNREAD_MAIL_EX 2 /* for SHARP_LED_MAIL_EXISTS */ | 1812 | #define LED_MAIL_UNREAD_MAIL_EX 2 /* for SHARP_LED_MAIL_EXISTS */ |
1813 | 1813 | ||
1814 | // #include <asm/sharp_apm.h> // including kernel headers is evil ... | 1814 | // #include <asm/sharp_apm.h> // including kernel headers is evil ... |
1815 | 1815 | ||
1816 | #define APM_IOCGEVTSRC OD_IOR( 'A', 203, int ) | 1816 | #define APM_IOCGEVTSRC OD_IOR( 'A', 203, int ) |
1817 | #define APM_IOCSEVTSRC OD_IORW( 'A', 204, int ) | 1817 | #define APM_IOCSEVTSRC OD_IORW( 'A', 204, int ) |
1818 | #define APM_EVT_POWER_BUTTON (1 << 0) | 1818 | #define APM_EVT_POWER_BUTTON (1 << 0) |
1819 | 1819 | ||
1820 | #define FL_IOCTL_STEP_CONTRAST 100 | 1820 | #define FL_IOCTL_STEP_CONTRAST 100 |
1821 | 1821 | ||
1822 | 1822 | ||
1823 | void Zaurus::buzzer ( int sound ) | 1823 | void Zaurus::buzzer ( int sound ) |
1824 | { | 1824 | { |
1825 | #ifndef QT_NO_SOUND | 1825 | #ifndef QT_NO_SOUND |
1826 | QString soundname; | 1826 | QString soundname; |
1827 | 1827 | ||
1828 | // Not all devices have real sound | 1828 | // Not all devices have real sound |
1829 | if ( d->m_model == Model_Zaurus_SLC7x0 | 1829 | if ( d->m_model == Model_Zaurus_SLC7x0 |
1830 | || d->m_model == Model_Zaurus_SLB600 ){ | 1830 | || d->m_model == Model_Zaurus_SLB600 ){ |
1831 | 1831 | ||
1832 | switch ( sound ){ | 1832 | switch ( sound ){ |
1833 | case SHARP_BUZ_SCHEDULE_ALARM: | 1833 | case SHARP_BUZ_SCHEDULE_ALARM: |
1834 | soundname = "alarm"; | 1834 | soundname = "alarm"; |
1835 | break; | 1835 | break; |
1836 | case SHARP_BUZ_TOUCHSOUND: | 1836 | case SHARP_BUZ_TOUCHSOUND: |
1837 | soundname = "touchsound"; | 1837 | soundname = "touchsound"; |
1838 | break; | 1838 | break; |
1839 | case SHARP_BUZ_KEYSOUND: | 1839 | case SHARP_BUZ_KEYSOUND: |
1840 | soundname = "keysound"; | 1840 | soundname = "keysound"; |
1841 | break; | 1841 | break; |
1842 | default: | 1842 | default: |
1843 | soundname = "alarm"; | 1843 | soundname = "alarm"; |
1844 | 1844 | ||
1845 | } | 1845 | } |
1846 | } | 1846 | } |
1847 | 1847 | ||
@@ -2205,193 +2205,193 @@ void Zaurus::virtual_hook( int id, void *data ) { | |||
2205 | } | 2205 | } |
2206 | case VIRTUAL_HINGE:{ | 2206 | case VIRTUAL_HINGE:{ |
2207 | VirtHingeStatus *hin = reinterpret_cast<VirtHingeStatus*>( data ); | 2207 | VirtHingeStatus *hin = reinterpret_cast<VirtHingeStatus*>( data ); |
2208 | hin->hingeStat = readHingeSensor(); | 2208 | hin->hingeStat = readHingeSensor(); |
2209 | break; | 2209 | break; |
2210 | } | 2210 | } |
2211 | default: | 2211 | default: |
2212 | ODevice::virtual_hook( id, data ); | 2212 | ODevice::virtual_hook( id, data ); |
2213 | break; | 2213 | break; |
2214 | } | 2214 | } |
2215 | } | 2215 | } |
2216 | 2216 | ||
2217 | /************************************************** | 2217 | /************************************************** |
2218 | * | 2218 | * |
2219 | * SIMpad | 2219 | * SIMpad |
2220 | * | 2220 | * |
2221 | **************************************************/ | 2221 | **************************************************/ |
2222 | 2222 | ||
2223 | void SIMpad::init ( ) | 2223 | void SIMpad::init ( ) |
2224 | { | 2224 | { |
2225 | d-> m_vendorstr = "SIEMENS"; | 2225 | d-> m_vendorstr = "SIEMENS"; |
2226 | d-> m_vendor = Vendor_SIEMENS; | 2226 | d-> m_vendor = Vendor_SIEMENS; |
2227 | 2227 | ||
2228 | QFile f ( "/proc/hal/model" ); | 2228 | QFile f ( "/proc/hal/model" ); |
2229 | 2229 | ||
2230 | //TODO Implement model checking | 2230 | //TODO Implement model checking |
2231 | //FIXME For now we assume an SL4 | 2231 | //FIXME For now we assume an SL4 |
2232 | 2232 | ||
2233 | d-> m_modelstr = "SL4"; | 2233 | d-> m_modelstr = "SL4"; |
2234 | d-> m_model = Model_SIMpad_SL4; | 2234 | d-> m_model = Model_SIMpad_SL4; |
2235 | 2235 | ||
2236 | switch ( d-> m_model ) { | 2236 | switch ( d-> m_model ) { |
2237 | default: | 2237 | default: |
2238 | d-> m_rotation = Rot0; | 2238 | d-> m_rotation = Rot0; |
2239 | d-> m_direction = CCW; | 2239 | d-> m_direction = CCW; |
2240 | d-> m_holdtime = 1000; // 1000ms | 2240 | d-> m_holdtime = 1000; // 1000ms |
2241 | 2241 | ||
2242 | break; | 2242 | break; |
2243 | } | 2243 | } |
2244 | 2244 | ||
2245 | f. setName ( "/etc/familiar-version" ); | 2245 | f. setName ( "/etc/familiar-version" ); |
2246 | if ( f. open ( IO_ReadOnly )) { | 2246 | if ( f. open ( IO_ReadOnly )) { |
2247 | d-> m_systemstr = "Familiar"; | 2247 | d-> m_systemstr = "Familiar"; |
2248 | d-> m_system = System_Familiar; | 2248 | d-> m_system = System_Familiar; |
2249 | 2249 | ||
2250 | QTextStream ts ( &f ); | 2250 | QTextStream ts ( &f ); |
2251 | d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); | 2251 | d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); |
2252 | 2252 | ||
2253 | f. close ( ); | 2253 | f. close ( ); |
2254 | } else { | 2254 | } else { |
2255 | f. setName ( "/etc/oz_version" ); | 2255 | f. setName ( "/etc/oz_version" ); |
2256 | 2256 | ||
2257 | if ( f. open ( IO_ReadOnly )) { | 2257 | if ( f. open ( IO_ReadOnly )) { |
2258 | d-> m_systemstr = "OpenEmbedded/SIMpad"; | 2258 | d-> m_systemstr = "OpenEmbedded/SIMpad"; |
2259 | d-> m_system = System_OpenZaurus; | 2259 | d-> m_system = System_OpenZaurus; |
2260 | 2260 | ||
2261 | QTextStream ts ( &f ); | 2261 | QTextStream ts ( &f ); |
2262 | ts.setDevice ( &f ); | 2262 | ts.setDevice ( &f ); |
2263 | d-> m_sysverstr = ts. readLine ( ); | 2263 | d-> m_sysverstr = ts. readLine ( ); |
2264 | f. close ( ); | 2264 | f. close ( ); |
2265 | } | 2265 | } |
2266 | } | 2266 | } |
2267 | 2267 | ||
2268 | m_leds [0] = m_leds [1] = Led_Off; | 2268 | m_leds [0] = m_leds [1] = Led_Off; |
2269 | 2269 | ||
2270 | m_power_timer = 0; | 2270 | m_power_timer = 0; |
2271 | 2271 | ||
2272 | } | 2272 | } |
2273 | 2273 | ||
2274 | void SIMpad::initButtons ( ) | 2274 | void SIMpad::initButtons ( ) |
2275 | { | 2275 | { |
2276 | if ( d-> m_buttons ) | 2276 | if ( d-> m_buttons ) |
2277 | return; | 2277 | return; |
2278 | 2278 | ||
2279 | if ( isQWS( ) ) | 2279 | if ( isQWS( ) ) |
2280 | QWSServer::setKeyboardFilter ( this ); | 2280 | QWSServer::setKeyboardFilter ( this ); |
2281 | 2281 | ||
2282 | d-> m_buttons = new QValueList <ODeviceButton>; | 2282 | d-> m_buttons = new QValueList <ODeviceButton>; |
2283 | 2283 | ||
2284 | for ( uint i = 0; i < ( sizeof( simpad_buttons ) / sizeof( s_button )); i++ ) { | 2284 | for ( uint i = 0; i < ( sizeof( simpad_buttons ) / sizeof( s_button )); i++ ) { |
2285 | s_button *sb = simpad_buttons + i; | 2285 | s_button *sb = simpad_buttons + i; |
2286 | ODeviceButton b; | 2286 | ODeviceButton b; |
2287 | 2287 | ||
2288 | if (( sb-> model & d-> m_model ) == d-> m_model ) { | 2288 | if (( sb-> model & d-> m_model ) == d-> m_model ) { |
2289 | b. setKeycode ( sb-> code ); | 2289 | b. setKeycode ( sb-> code ); |
2290 | b. setUserText ( QObject::tr ( "Button", sb-> utext )); | 2290 | b. setUserText ( QObject::tr ( "Button", sb-> utext )); |
2291 | b. setPixmap ( Resource::loadPixmap ( sb-> pix )); | 2291 | b. setPixmap ( Resource::loadPixmap ( sb-> pix )); |
2292 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( sb-> fpressedservice ), sb-> fpressedaction )); | 2292 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( sb-> fpressedservice ), sb-> fpressedaction )); |
2293 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( sb-> fheldservice ), sb-> fheldaction )); | 2293 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( sb-> fheldservice ), sb-> fheldaction )); |
2294 | 2294 | ||
2295 | d-> m_buttons-> append ( b ); | 2295 | d-> m_buttons-> append ( b ); |
2296 | } | 2296 | } |
2297 | } | 2297 | } |
2298 | reloadButtonMapping ( ); | 2298 | reloadButtonMapping ( ); |
2299 | 2299 | ||
2300 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 2300 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
2301 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 2301 | connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT( systemMessage(const QCString&,const QByteArray&))); |
2302 | } | 2302 | } |
2303 | 2303 | ||
2304 | // SIMpad boardcontrol register CS3 | 2304 | // SIMpad boardcontrol register CS3 |
2305 | #define SIMPAD_BOARDCONTROL "/proc/cs3" | 2305 | #define SIMPAD_BOARDCONTROL "/proc/cs3" |
2306 | #define SIMPAD_VCC_5V_EN 0x0001 // For 5V PCMCIA | 2306 | #define SIMPAD_VCC_5V_EN 0x0001 // For 5V PCMCIA |
2307 | #define SIMPAD_VCC_3V_EN 0x0002 // FOR 3.3V PCMCIA | 2307 | #define SIMPAD_VCC_3V_EN 0x0002 // FOR 3.3V PCMCIA |
2308 | #define SIMPAD_EN1 0x0004 // This is only for EPROM's | 2308 | #define SIMPAD_EN1 0x0004 // This is only for EPROM's |
2309 | #define SIMPAD_EN0 0x0008 // Both should be enable for 3.3V or 5V | 2309 | #define SIMPAD_EN0 0x0008 // Both should be enable for 3.3V or 5V |
2310 | #define SIMPAD_DISPLAY_ON 0x0010 | 2310 | #define SIMPAD_DISPLAY_ON 0x0010 |
2311 | #define SIMPAD_PCMCIA_BUFF_DIS 0x0020 | 2311 | #define SIMPAD_PCMCIA_BUFF_DIS 0x0020 |
2312 | #define SIMPAD_MQ_RESET 0x0040 | 2312 | #define SIMPAD_MQ_RESET 0x0040 |
2313 | #define SIMPAD_PCMCIA_RESET 0x0080 | 2313 | #define SIMPAD_PCMCIA_RESET 0x0080 |
2314 | #define SIMPAD_DECT_POWER_ON 0x0100 | 2314 | #define SIMPAD_DECT_POWER_ON 0x0100 |
2315 | #define SIMPAD_IRDA_SD 0x0200 // Shutdown for powersave | 2315 | #define SIMPAD_IRDA_SD 0x0200 // Shutdown for powersave |
2316 | #define SIMPAD_RS232_ON 0x0400 | 2316 | #define SIMPAD_RS232_ON 0x0400 |
2317 | #define SIMPAD_SD_MEDIAQ 0x0800 // Shutdown for powersave | 2317 | #define SIMPAD_SD_MEDIAQ 0x0800 // Shutdown for powersave |
2318 | #define SIMPAD_LED2_ON 0x1000 | 2318 | #define SIMPAD_LED2_ON 0x1000 |
2319 | #define SIMPAD_IRDA_MODE 0x2000 // Fast/Slow IrDA mode | 2319 | #define SIMPAD_IRDA_MODE 0x2000 // Fast/Slow IrDA mode |
2320 | #define SIMPAD_ENABLE_5V 0x4000 // Enable 5V circuit | 2320 | #define SIMPAD_ENABLE_5V 0x4000 // Enable 5V circuit |
2321 | #define SIMPAD_RESET_SIMCARD 0x8000 | 2321 | #define SIMPAD_RESET_SIMCARD 0x8000 |
2322 | 2322 | ||
2323 | //SIMpad touchscreen backlight strength control | 2323 | //SIMpad touchscreen backlight strength control |
2324 | #define SIMPAD_BACKLIGHT_CONTROL "/proc/driver/mq200/registers/PWM_CONTROL" | 2324 | #define SIMPAD_BACKLIGHT_CONTROL "/proc/driver/mq200/registers/PWM_CONTROL" |
2325 | #define SIMPAD_BACKLIGHT_MASK 0x00a10044 | 2325 | #define SIMPAD_BACKLIGHT_MASK 0x00a10044 |
2326 | 2326 | ||
2327 | QValueList <OLed> SIMpad::ledList ( ) const | 2327 | QValueList <OLed> SIMpad::ledList ( ) const |
2328 | { | 2328 | { |
2329 | QValueList <OLed> vl; | 2329 | QValueList <OLed> vl; |
2330 | vl << Led_Power; //FIXME which LED is LED2 ? The green one or the amber one? | 2330 | vl << Led_Power; //FIXME which LED is LED2 ? The green one or the amber one? |
2331 | //vl << Led_Mail; //TODO find out if LED1 is accessible anyway | 2331 | //vl << Led_Mail; //TODO find out if LED1 is accessible anyway |
2332 | return vl; | 2332 | return vl; |
2333 | } | 2333 | } |
2334 | 2334 | ||
2335 | QValueList <OLedState> SIMpad::ledStateList ( OLed l ) const | 2335 | QValueList <OLedState> SIMpad::ledStateList ( OLed l ) const |
2336 | { | 2336 | { |
2337 | QValueList <OLedState> vl; | 2337 | QValueList <OLedState> vl; |
2338 | 2338 | ||
2339 | if ( l == Led_Power ) //FIXME which LED is LED2 ? The green one or the amber one? | 2339 | if ( l == Led_Power ) //FIXME which LED is LED2 ? The green one or the amber one? |
2340 | vl << Led_Off << Led_On; | 2340 | vl << Led_Off << Led_On; |
2341 | //else if ( l == Led_Mail ) //TODO find out if LED1 is accessible anyway | 2341 | //else if ( l == Led_Mail ) //TODO find out if LED1 is accessible anyway |
2342 | //vl << Led_Off; | 2342 | //vl << Led_Off; |
2343 | return vl; | 2343 | return vl; |
2344 | } | 2344 | } |
2345 | 2345 | ||
2346 | OLedState SIMpad::ledState ( OLed l ) const | 2346 | OLedState SIMpad::ledState ( OLed l ) const |
2347 | { | 2347 | { |
2348 | switch ( l ) { | 2348 | switch ( l ) { |
2349 | case Led_Power: | 2349 | case Led_Power: |
2350 | return m_leds [0]; | 2350 | return m_leds [0]; |
2351 | //case Led_Mail: | 2351 | //case Led_Mail: |
2352 | //return m_leds [1]; | 2352 | //return m_leds [1]; |
2353 | default: | 2353 | default: |
2354 | return Led_Off; | 2354 | return Led_Off; |
2355 | } | 2355 | } |
2356 | } | 2356 | } |
2357 | 2357 | ||
2358 | bool SIMpad::setLedState ( OLed l, OLedState st ) | 2358 | bool SIMpad::setLedState ( OLed l, OLedState st ) |
2359 | { | 2359 | { |
2360 | static int fd = ::open ( SIMPAD_BOARDCONTROL, O_RDWR | O_NONBLOCK ); | 2360 | static int fd = ::open ( SIMPAD_BOARDCONTROL, O_RDWR | O_NONBLOCK ); |
2361 | 2361 | ||
2362 | if ( l == Led_Power ) { | 2362 | if ( l == Led_Power ) { |
2363 | if ( fd >= 0 ) { | 2363 | if ( fd >= 0 ) { |
2364 | LED_IN leds; | 2364 | LED_IN leds; |
2365 | ::memset ( &leds, 0, sizeof( leds )); | 2365 | ::memset ( &leds, 0, sizeof( leds )); |
2366 | leds. TotalTime = 0; | 2366 | leds. TotalTime = 0; |
2367 | leds. OnTime = 0; | 2367 | leds. OnTime = 0; |
2368 | leds. OffTime = 1; | 2368 | leds. OffTime = 1; |
2369 | leds. OffOnBlink = 2; | 2369 | leds. OffOnBlink = 2; |
2370 | 2370 | ||
2371 | switch ( st ) { | 2371 | switch ( st ) { |
2372 | case Led_Off : leds. OffOnBlink = 0; break; | 2372 | case Led_Off : leds. OffOnBlink = 0; break; |
2373 | case Led_On : leds. OffOnBlink = 1; break; | 2373 | case Led_On : leds. OffOnBlink = 1; break; |
2374 | case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; | 2374 | case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; |
2375 | case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; | 2375 | case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; |
2376 | } | 2376 | } |
2377 | 2377 | ||
2378 | { | 2378 | { |
2379 | /*TODO Implement this like that: | 2379 | /*TODO Implement this like that: |
2380 | read from cs3 | 2380 | read from cs3 |
2381 | && with SIMPAD_LED2_ON | 2381 | && with SIMPAD_LED2_ON |
2382 | write to cs3 */ | 2382 | write to cs3 */ |
2383 | m_leds [0] = st; | 2383 | m_leds [0] = st; |
2384 | return true; | 2384 | return true; |
2385 | } | 2385 | } |
2386 | } | 2386 | } |
2387 | } | 2387 | } |
2388 | return false; | 2388 | return false; |
2389 | } | 2389 | } |
2390 | 2390 | ||
2391 | 2391 | ||
2392 | bool SIMpad::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) | 2392 | bool SIMpad::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) |
2393 | { | 2393 | { |
2394 | //TODO | 2394 | //TODO |
2395 | return false; | 2395 | return false; |
2396 | } | 2396 | } |
2397 | 2397 | ||
@@ -2705,142 +2705,142 @@ bool Ramses::setDisplayContrast(int contr) | |||
2705 | contr = 0; | 2705 | contr = 0; |
2706 | contr = 90 - (contr * 20 / 255); | 2706 | contr = 90 - (contr * 20 / 255); |
2707 | 2707 | ||
2708 | if ((fd = ::open("/proc/sys/board/pwm0", O_WRONLY)) >= 0) { | 2708 | if ((fd = ::open("/proc/sys/board/pwm0", O_WRONLY)) >= 0) { |
2709 | qDebug(" %d -> pwm0", contr); | 2709 | qDebug(" %d -> pwm0", contr); |
2710 | char writeCommand[100]; | 2710 | char writeCommand[100]; |
2711 | const int count = sprintf(writeCommand, "%d\n", contr); | 2711 | const int count = sprintf(writeCommand, "%d\n", contr); |
2712 | res = (::write(fd, writeCommand, count) != -1); | 2712 | res = (::write(fd, writeCommand, count) != -1); |
2713 | res = true; | 2713 | res = true; |
2714 | ::close(fd); | 2714 | ::close(fd); |
2715 | } | 2715 | } |
2716 | return res; | 2716 | return res; |
2717 | } | 2717 | } |
2718 | 2718 | ||
2719 | 2719 | ||
2720 | int Ramses::displayContrastResolution() const | 2720 | int Ramses::displayContrastResolution() const |
2721 | { | 2721 | { |
2722 | return 20; | 2722 | return 20; |
2723 | } | 2723 | } |
2724 | 2724 | ||
2725 | 2725 | ||
2726 | /************************************************** | 2726 | /************************************************** |
2727 | * * | 2727 | * * |
2728 | * Jornada * | 2728 | * Jornada * |
2729 | * * | 2729 | * * |
2730 | **************************************************/ | 2730 | **************************************************/ |
2731 | 2731 | ||
2732 | 2732 | ||
2733 | bool Jornada::isJornada ( ) | 2733 | bool Jornada::isJornada ( ) |
2734 | { | 2734 | { |
2735 | QFile f( "/proc/cpuinfo" ); | 2735 | QFile f( "/proc/cpuinfo" ); |
2736 | if ( f. open ( IO_ReadOnly ) ) { | 2736 | if ( f. open ( IO_ReadOnly ) ) { |
2737 | QTextStream ts ( &f ); | 2737 | QTextStream ts ( &f ); |
2738 | QString line; | 2738 | QString line; |
2739 | while( line = ts. readLine ( ) ) { | 2739 | while( line = ts. readLine ( ) ) { |
2740 | if ( line. left ( 8 ) == "Hardware" ) { | 2740 | if ( line. left ( 8 ) == "Hardware" ) { |
2741 | int loc = line. find ( ":" ); | 2741 | int loc = line. find ( ":" ); |
2742 | if ( loc != -1 ) { | 2742 | if ( loc != -1 ) { |
2743 | QString model = | 2743 | QString model = |
2744 | line. mid ( loc + 2 ). simplifyWhiteSpace( ); | 2744 | line. mid ( loc + 2 ). simplifyWhiteSpace( ); |
2745 | return ( model == "HP Jornada 56x" ); | 2745 | return ( model == "HP Jornada 56x" ); |
2746 | } | 2746 | } |
2747 | } | 2747 | } |
2748 | } | 2748 | } |
2749 | } | 2749 | } |
2750 | return false; | 2750 | return false; |
2751 | } | 2751 | } |
2752 | 2752 | ||
2753 | void Jornada::init ( ) | 2753 | void Jornada::init ( ) |
2754 | { | 2754 | { |
2755 | d-> m_vendorstr = "HP"; | 2755 | d-> m_vendorstr = "HP"; |
2756 | d-> m_vendor = Vendor_HP; | 2756 | d-> m_vendor = Vendor_HP; |
2757 | d-> m_modelstr = "Jornada 56x"; | 2757 | d-> m_modelstr = "Jornada 56x"; |
2758 | d-> m_model = Model_Jornada_56x; | 2758 | d-> m_model = Model_Jornada_56x; |
2759 | d-> m_systemstr = "Familiar"; | 2759 | d-> m_systemstr = "Familiar"; |
2760 | d-> m_system = System_Familiar; | 2760 | d-> m_system = System_Familiar; |
2761 | d-> m_rotation = Rot0; | 2761 | d-> m_rotation = Rot0; |
2762 | 2762 | ||
2763 | QFile f ( "/etc/familiar-version" ); | 2763 | QFile f ( "/etc/familiar-version" ); |
2764 | f. setName ( "/etc/familiar-version" ); | 2764 | f. setName ( "/etc/familiar-version" ); |
2765 | if ( f. open ( IO_ReadOnly )) { | 2765 | if ( f. open ( IO_ReadOnly )) { |
2766 | 2766 | ||
2767 | QTextStream ts ( &f ); | 2767 | QTextStream ts ( &f ); |
2768 | d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); | 2768 | d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); |
2769 | 2769 | ||
2770 | f. close ( ); | 2770 | f. close ( ); |
2771 | } | 2771 | } |
2772 | } | 2772 | } |
2773 | 2773 | ||
2774 | #if 0 | 2774 | #if 0 |
2775 | void Jornada::initButtons ( ) | 2775 | void Jornada::initButtons ( ) |
2776 | { | 2776 | { |
2777 | if ( d-> m_buttons ) | 2777 | if ( d-> m_buttons ) |
2778 | return; | 2778 | return; |
2779 | 2779 | ||
2780 | // Simulation uses iPAQ 3660 device buttons | 2780 | // Simulation uses iPAQ 3660 device buttons |
2781 | 2781 | ||
2782 | qDebug ( "init Buttons" ); | 2782 | qDebug ( "init Buttons" ); |
2783 | d-> m_buttons = new QValueList <ODeviceButton>; | 2783 | d-> m_buttons = new QValueList <ODeviceButton>; |
2784 | 2784 | ||
2785 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { | 2785 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { |
2786 | i_button *ib = ipaq_buttons + i; | 2786 | i_button *ib = ipaq_buttons + i; |
2787 | ODeviceButton b; | 2787 | ODeviceButton b; |
2788 | 2788 | ||
2789 | if (( ib-> model & Model_iPAQ_H36xx ) == Model_iPAQ_H36xx ) { | 2789 | if (( ib-> model & Model_iPAQ_H36xx ) == Model_iPAQ_H36xx ) { |
2790 | b. setKeycode ( ib-> code ); | 2790 | b. setKeycode ( ib-> code ); |
2791 | b. setUserText ( QObject::tr ( "Button", ib-> utext )); | 2791 | b. setUserText ( QObject::tr ( "Button", ib-> utext )); |
2792 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); | 2792 | b. setPixmap ( Resource::loadPixmap ( ib-> pix )); |
2793 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); | 2793 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); |
2794 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); | 2794 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); |
2795 | d-> m_buttons-> append ( b ); | 2795 | d-> m_buttons-> append ( b ); |
2796 | } | 2796 | } |
2797 | } | 2797 | } |
2798 | reloadButtonMapping ( ); | 2798 | reloadButtonMapping ( ); |
2799 | 2799 | ||
2800 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 2800 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
2801 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 2801 | connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT( systemMessage(const QCString&,const QByteArray&))); |
2802 | } | 2802 | } |
2803 | #endif | 2803 | #endif |
2804 | int Jornada::displayBrightnessResolution ( ) const | 2804 | int Jornada::displayBrightnessResolution ( ) const |
2805 | { | 2805 | { |
2806 | } | 2806 | } |
2807 | 2807 | ||
2808 | bool Jornada::setDisplayBrightness ( int bright ) | 2808 | bool Jornada::setDisplayBrightness ( int bright ) |
2809 | { | 2809 | { |
2810 | bool res = false; | 2810 | bool res = false; |
2811 | int fd; | 2811 | int fd; |
2812 | 2812 | ||
2813 | if ( bright > 255 ) | 2813 | if ( bright > 255 ) |
2814 | bright = 255; | 2814 | bright = 255; |
2815 | if ( bright < 0 ) | 2815 | if ( bright < 0 ) |
2816 | bright = 0; | 2816 | bright = 0; |
2817 | 2817 | ||
2818 | if (( fd = ::open ( "/dev/touchscreen/0", O_WRONLY )) >= 0 ) { | 2818 | if (( fd = ::open ( "/dev/touchscreen/0", O_WRONLY )) >= 0 ) { |
2819 | FLITE_IN bl; | 2819 | FLITE_IN bl; |
2820 | bl. mode = 1; | 2820 | bl. mode = 1; |
2821 | bl. pwr = bright ? 1 : 0; | 2821 | bl. pwr = bright ? 1 : 0; |
2822 | bl. brightness = ( bright * ( displayBrightnessResolution ( ) - 1 ) + 127 ) / 255; | 2822 | bl. brightness = ( bright * ( displayBrightnessResolution ( ) - 1 ) + 127 ) / 255; |
2823 | res = ( ::ioctl ( fd, FLITE_ON, &bl ) == 0 ); | 2823 | res = ( ::ioctl ( fd, FLITE_ON, &bl ) == 0 ); |
2824 | ::close ( fd ); | 2824 | ::close ( fd ); |
2825 | } | 2825 | } |
2826 | return res; | 2826 | return res; |
2827 | } | 2827 | } |
2828 | 2828 | ||
2829 | bool Jornada::setSoftSuspend ( bool soft ) | 2829 | bool Jornada::setSoftSuspend ( bool soft ) |
2830 | { | 2830 | { |
2831 | bool res = false; | 2831 | bool res = false; |
2832 | int fd; | 2832 | int fd; |
2833 | 2833 | ||
2834 | if (( fd = ::open ( "/proc/sys/ts/suspend_button_mode", O_WRONLY )) >= 0 ) { | 2834 | if (( fd = ::open ( "/proc/sys/ts/suspend_button_mode", O_WRONLY )) >= 0 ) { |
2835 | if ( ::write ( fd, soft ? "1" : "0", 1 ) == 1 ) | 2835 | if ( ::write ( fd, soft ? "1" : "0", 1 ) == 1 ) |
2836 | res = true; | 2836 | res = true; |
2837 | else | 2837 | else |
2838 | ::perror ( "write to /proc/sys/ts/suspend_button_mode" ); | 2838 | ::perror ( "write to /proc/sys/ts/suspend_button_mode" ); |
2839 | 2839 | ||
2840 | ::close ( fd ); | 2840 | ::close ( fd ); |
2841 | } | 2841 | } |
2842 | else | 2842 | else |
2843 | ::perror ( "/proc/sys/ts/suspend_button_mode" ); | 2843 | ::perror ( "/proc/sys/ts/suspend_button_mode" ); |
2844 | 2844 | ||
2845 | return res; | 2845 | return res; |
2846 | } | 2846 | } |
diff --git a/libopie/ofileselector.cpp b/libopie/ofileselector.cpp index 1ba94ae..2a6aed0 100644 --- a/libopie/ofileselector.cpp +++ b/libopie/ofileselector.cpp | |||
@@ -30,198 +30,198 @@ QString OFileViewInterface::name()const{ | |||
30 | return m_name; | 30 | return m_name; |
31 | } | 31 | } |
32 | void OFileViewInterface::setName( const QString& name ) { | 32 | void OFileViewInterface::setName( const QString& name ) { |
33 | m_name = name; | 33 | m_name = name; |
34 | } | 34 | } |
35 | OFileSelector* OFileViewInterface::selector()const { | 35 | OFileSelector* OFileViewInterface::selector()const { |
36 | return m_selector; | 36 | return m_selector; |
37 | } | 37 | } |
38 | DocLnk OFileViewInterface::selectedDocument()const { | 38 | DocLnk OFileViewInterface::selectedDocument()const { |
39 | return DocLnk( selectedName() ); | 39 | return DocLnk( selectedName() ); |
40 | } | 40 | } |
41 | bool OFileViewInterface::showNew()const { | 41 | bool OFileViewInterface::showNew()const { |
42 | return selector()->showNew(); | 42 | return selector()->showNew(); |
43 | } | 43 | } |
44 | bool OFileViewInterface::showClose()const { | 44 | bool OFileViewInterface::showClose()const { |
45 | return selector()->showClose(); | 45 | return selector()->showClose(); |
46 | } | 46 | } |
47 | MimeTypes OFileViewInterface::mimeTypes()const { | 47 | MimeTypes OFileViewInterface::mimeTypes()const { |
48 | return selector()->mimeTypes(); | 48 | return selector()->mimeTypes(); |
49 | } | 49 | } |
50 | QStringList OFileViewInterface::currentMimeType()const { | 50 | QStringList OFileViewInterface::currentMimeType()const { |
51 | return selector()->currentMimeType(); | 51 | return selector()->currentMimeType(); |
52 | } | 52 | } |
53 | void OFileViewInterface::activate( const QString& ) { | 53 | void OFileViewInterface::activate( const QString& ) { |
54 | // not implemented here | 54 | // not implemented here |
55 | } | 55 | } |
56 | void OFileViewInterface::ok() { | 56 | void OFileViewInterface::ok() { |
57 | emit selector()->ok(); | 57 | emit selector()->ok(); |
58 | } | 58 | } |
59 | void OFileViewInterface::cancel() { | 59 | void OFileViewInterface::cancel() { |
60 | emit selector()->cancel(); | 60 | emit selector()->cancel(); |
61 | } | 61 | } |
62 | void OFileViewInterface::closeMe() { | 62 | void OFileViewInterface::closeMe() { |
63 | emit selector()->closeMe(); | 63 | emit selector()->closeMe(); |
64 | } | 64 | } |
65 | void OFileViewInterface::fileSelected( const QString& str) { | 65 | void OFileViewInterface::fileSelected( const QString& str) { |
66 | emit selector()->fileSelected( str); | 66 | emit selector()->fileSelected( str); |
67 | } | 67 | } |
68 | void OFileViewInterface::fileSelected( const DocLnk& lnk) { | 68 | void OFileViewInterface::fileSelected( const DocLnk& lnk) { |
69 | emit selector()->fileSelected( lnk ); | 69 | emit selector()->fileSelected( lnk ); |
70 | } | 70 | } |
71 | void OFileViewInterface::setCurrentFileName( const QString& str ) { | 71 | void OFileViewInterface::setCurrentFileName( const QString& str ) { |
72 | selector()->m_lneEdit->setText( str ); | 72 | selector()->m_lneEdit->setText( str ); |
73 | } | 73 | } |
74 | QString OFileViewInterface::currentFileName()const{ | 74 | QString OFileViewInterface::currentFileName()const{ |
75 | return selector()->m_lneEdit->text(); | 75 | return selector()->m_lneEdit->text(); |
76 | } | 76 | } |
77 | QString OFileViewInterface::startDirectory()const{ | 77 | QString OFileViewInterface::startDirectory()const{ |
78 | return selector()->m_startDir; | 78 | return selector()->m_startDir; |
79 | } | 79 | } |
80 | 80 | ||
81 | 81 | ||
82 | ODocumentFileView::ODocumentFileView( OFileSelector* selector ) | 82 | ODocumentFileView::ODocumentFileView( OFileSelector* selector ) |
83 | : OFileViewInterface( selector ) { | 83 | : OFileViewInterface( selector ) { |
84 | m_selector = 0; | 84 | m_selector = 0; |
85 | setName( QObject::tr("Documents") ); | 85 | setName( QObject::tr("Documents") ); |
86 | } | 86 | } |
87 | ODocumentFileView::~ODocumentFileView() { | 87 | ODocumentFileView::~ODocumentFileView() { |
88 | 88 | ||
89 | } | 89 | } |
90 | QString ODocumentFileView::selectedName()const { | 90 | QString ODocumentFileView::selectedName()const { |
91 | if (!m_selector) | 91 | if (!m_selector) |
92 | return QString::null; | 92 | return QString::null; |
93 | 93 | ||
94 | return m_selector->selectedDocument().file(); | 94 | return m_selector->selectedDocument().file(); |
95 | } | 95 | } |
96 | QString ODocumentFileView::selectedPath()const { | 96 | QString ODocumentFileView::selectedPath()const { |
97 | return QPEApplication::documentDir(); | 97 | return QPEApplication::documentDir(); |
98 | } | 98 | } |
99 | QString ODocumentFileView::directory()const { | 99 | QString ODocumentFileView::directory()const { |
100 | return selectedPath(); | 100 | return selectedPath(); |
101 | } | 101 | } |
102 | void ODocumentFileView::reread() { | 102 | void ODocumentFileView::reread() { |
103 | if (!m_selector) | 103 | if (!m_selector) |
104 | return; | 104 | return; |
105 | 105 | ||
106 | m_selector->setNewVisible( showNew() ); | 106 | m_selector->setNewVisible( showNew() ); |
107 | m_selector->setCloseVisible( showClose() ); | 107 | m_selector->setCloseVisible( showClose() ); |
108 | m_selector->filter = currentMimeType().join(";"); | 108 | m_selector->filter = currentMimeType().join(";"); |
109 | m_selector->reread(); | 109 | m_selector->reread(); |
110 | } | 110 | } |
111 | int ODocumentFileView::fileCount()const { | 111 | int ODocumentFileView::fileCount()const { |
112 | if (!m_selector) | 112 | if (!m_selector) |
113 | return -1; | 113 | return -1; |
114 | 114 | ||
115 | return m_selector->fileCount(); | 115 | return m_selector->fileCount(); |
116 | } | 116 | } |
117 | DocLnk ODocumentFileView::selectedDocument()const { | 117 | DocLnk ODocumentFileView::selectedDocument()const { |
118 | if (!m_selector) | 118 | if (!m_selector) |
119 | return DocLnk(); | 119 | return DocLnk(); |
120 | 120 | ||
121 | return m_selector->selectedDocument(); | 121 | return m_selector->selectedDocument(); |
122 | } | 122 | } |
123 | QWidget* ODocumentFileView::widget( QWidget* parent ) { | 123 | QWidget* ODocumentFileView::widget( QWidget* parent ) { |
124 | if (!m_selector ) { | 124 | if (!m_selector ) { |
125 | m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() ); | 125 | m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() ); |
126 | QObject::connect(m_selector, SIGNAL(fileSelected( const DocLnk& ) ), | 126 | QObject::connect(m_selector, SIGNAL(fileSelected(const DocLnk&) ), |
127 | selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) ); | 127 | selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) ); |
128 | QObject::connect(m_selector, SIGNAL(closeMe() ), | 128 | QObject::connect(m_selector, SIGNAL(closeMe() ), |
129 | selector(), SIGNAL(closeMe() ) ); | 129 | selector(), SIGNAL(closeMe() ) ); |
130 | QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk& ) ), | 130 | QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk&) ), |
131 | selector(), SIGNAL(newSelected(const DocLnk& ) ) ); | 131 | selector(), SIGNAL(newSelected(const DocLnk&) ) ); |
132 | } | 132 | } |
133 | 133 | ||
134 | return m_selector; | 134 | return m_selector; |
135 | } | 135 | } |
136 | 136 | ||
137 | /* | 137 | /* |
138 | * This is the file system view used | 138 | * This is the file system view used |
139 | * we use a QListView + QListViewItems for it | 139 | * we use a QListView + QListViewItems for it |
140 | */ | 140 | */ |
141 | 141 | ||
142 | OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap, | 142 | OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap, |
143 | const QString& path, const QString& date, | 143 | const QString& path, const QString& date, |
144 | const QString& size, const QString& dir, | 144 | const QString& size, const QString& dir, |
145 | bool isLocked, bool isDir ) | 145 | bool isLocked, bool isDir ) |
146 | : QListViewItem( view ) | 146 | : QListViewItem( view ) |
147 | { | 147 | { |
148 | setPixmap(0, pixmap ); | 148 | setPixmap(0, pixmap ); |
149 | setText(1, path ); | 149 | setText(1, path ); |
150 | setText(2, size ); | 150 | setText(2, size ); |
151 | setText(3, date ); | 151 | setText(3, date ); |
152 | m_isDir = isDir; | 152 | m_isDir = isDir; |
153 | m_dir = dir; | 153 | m_dir = dir; |
154 | m_locked = isLocked; | 154 | m_locked = isLocked; |
155 | } | 155 | } |
156 | OFileSelectorItem::~OFileSelectorItem() { | 156 | OFileSelectorItem::~OFileSelectorItem() { |
157 | 157 | ||
158 | } | 158 | } |
159 | bool OFileSelectorItem::isLocked()const { | 159 | bool OFileSelectorItem::isLocked()const { |
160 | return m_locked; | 160 | return m_locked; |
161 | } | 161 | } |
162 | QString OFileSelectorItem::directory()const { | 162 | QString OFileSelectorItem::directory()const { |
163 | return m_dir; | 163 | return m_dir; |
164 | } | 164 | } |
165 | bool OFileSelectorItem::isDir()const { | 165 | bool OFileSelectorItem::isDir()const { |
166 | return m_isDir; | 166 | return m_isDir; |
167 | } | 167 | } |
168 | QString OFileSelectorItem::path()const { | 168 | QString OFileSelectorItem::path()const { |
169 | return text( 1 ); | 169 | return text( 1 ); |
170 | } | 170 | } |
171 | QString OFileSelectorItem::key( int id, bool )const { | 171 | QString OFileSelectorItem::key( int id, bool )const { |
172 | QString ke; | 172 | QString ke; |
173 | if( id == 0 || id == 1 ){ // name | 173 | if( id == 0 || id == 1 ){ // name |
174 | if( m_isDir ){ | 174 | if( m_isDir ){ |
175 | ke.append("0" ); | 175 | ke.append("0" ); |
176 | ke.append( text(1) ); | 176 | ke.append( text(1) ); |
177 | }else{ | 177 | }else{ |
178 | ke.append("1" ); | 178 | ke.append("1" ); |
179 | ke.append( text(1) ); | 179 | ke.append( text(1) ); |
180 | } | 180 | } |
181 | return ke; | 181 | return ke; |
182 | }else | 182 | }else |
183 | return text( id ); | 183 | return text( id ); |
184 | 184 | ||
185 | } | 185 | } |
186 | 186 | ||
187 | OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, | 187 | OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, |
188 | OFileSelector* sel) | 188 | OFileSelector* sel) |
189 | : QWidget( parent ), m_sel( sel ) { | 189 | : QWidget( parent ), m_sel( sel ) { |
190 | m_all = false; | 190 | m_all = false; |
191 | QVBoxLayout* lay = new QVBoxLayout( this ); | 191 | QVBoxLayout* lay = new QVBoxLayout( this ); |
192 | m_currentDir = startDir; | 192 | m_currentDir = startDir; |
193 | 193 | ||
194 | /* | 194 | /* |
195 | * now we add a special bar | 195 | * now we add a special bar |
196 | * One Button For Up | 196 | * One Button For Up |
197 | * Home | 197 | * Home |
198 | * Doc | 198 | * Doc |
199 | * And a dropdown menu with FileSystems | 199 | * And a dropdown menu with FileSystems |
200 | * FUTURE: one to change dir with lineedit | 200 | * FUTURE: one to change dir with lineedit |
201 | * Bookmarks | 201 | * Bookmarks |
202 | * Create Dir | 202 | * Create Dir |
203 | */ | 203 | */ |
204 | QHBox* box = new QHBox(this ); | 204 | QHBox* box = new QHBox(this ); |
205 | box->setBackgroundMode( PaletteButton ); | 205 | box->setBackgroundMode( PaletteButton ); |
206 | box->setSpacing( 0 ); | 206 | box->setSpacing( 0 ); |
207 | 207 | ||
208 | QToolButton *btn = new QToolButton( box ); | 208 | QToolButton *btn = new QToolButton( box ); |
209 | btn->setIconSet( Resource::loadIconSet("up") ); | 209 | btn->setIconSet( Resource::loadIconSet("up") ); |
210 | connect(btn, SIGNAL(clicked() ), | 210 | connect(btn, SIGNAL(clicked() ), |
211 | this, SLOT( cdUP() ) ); | 211 | this, SLOT( cdUP() ) ); |
212 | 212 | ||
213 | btn = new QToolButton( box ); | 213 | btn = new QToolButton( box ); |
214 | btn->setIconSet( Resource::loadIconSet("home") ); | 214 | btn->setIconSet( Resource::loadIconSet("home") ); |
215 | connect(btn, SIGNAL(clicked() ), | 215 | connect(btn, SIGNAL(clicked() ), |
216 | this, SLOT( cdHome() ) ); | 216 | this, SLOT( cdHome() ) ); |
217 | 217 | ||
218 | btn = new QToolButton( box ); | 218 | btn = new QToolButton( box ); |
219 | btn->setIconSet( Resource::loadIconSet("DocsIcon") ); | 219 | btn->setIconSet( Resource::loadIconSet("DocsIcon") ); |
220 | connect(btn, SIGNAL(clicked() ), | 220 | connect(btn, SIGNAL(clicked() ), |
221 | this, SLOT(cdDoc() ) ); | 221 | this, SLOT(cdDoc() ) ); |
222 | 222 | ||
223 | m_btnNew = new QToolButton( box ); | 223 | m_btnNew = new QToolButton( box ); |
224 | m_btnNew->setIconSet( Resource::loadIconSet("new") ); | 224 | m_btnNew->setIconSet( Resource::loadIconSet("new") ); |
225 | connect(m_btnNew, SIGNAL(clicked() ), | 225 | connect(m_btnNew, SIGNAL(clicked() ), |
226 | this, SLOT(slotNew() ) ); | 226 | this, SLOT(slotNew() ) ); |
227 | 227 | ||
@@ -295,194 +295,194 @@ void OFileViewFileListView::reread( bool all ) { | |||
295 | else | 295 | else |
296 | m_btnClose->hide(); | 296 | m_btnClose->hide(); |
297 | 297 | ||
298 | if (selector()->showNew() ) | 298 | if (selector()->showNew() ) |
299 | m_btnNew->show(); | 299 | m_btnNew->show(); |
300 | else | 300 | else |
301 | m_btnNew->hide(); | 301 | m_btnNew->hide(); |
302 | 302 | ||
303 | m_mimes = selector()->currentMimeType(); | 303 | m_mimes = selector()->currentMimeType(); |
304 | m_all = all; | 304 | m_all = all; |
305 | 305 | ||
306 | QDir dir( m_currentDir ); | 306 | QDir dir( m_currentDir ); |
307 | if (!dir.exists() ) | 307 | if (!dir.exists() ) |
308 | return; | 308 | return; |
309 | 309 | ||
310 | dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed ); | 310 | dir.setSorting( QDir::Name | QDir::DirsFirst | QDir::Reversed ); |
311 | int filter; | 311 | int filter; |
312 | if (m_all ) | 312 | if (m_all ) |
313 | filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; | 313 | filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All; |
314 | else | 314 | else |
315 | filter = QDir::Files | QDir::Dirs | QDir::All; | 315 | filter = QDir::Files | QDir::Dirs | QDir::All; |
316 | dir.setFilter( filter ); | 316 | dir.setFilter( filter ); |
317 | 317 | ||
318 | // now go through all files | 318 | // now go through all files |
319 | const QFileInfoList *list = dir.entryInfoList(); | 319 | const QFileInfoList *list = dir.entryInfoList(); |
320 | if (!list) { | 320 | if (!list) { |
321 | cdUP(); | 321 | cdUP(); |
322 | return; | 322 | return; |
323 | } | 323 | } |
324 | QFileInfoListIterator it( *list ); | 324 | QFileInfoListIterator it( *list ); |
325 | QFileInfo *fi; | 325 | QFileInfo *fi; |
326 | while( (fi=it.current() ) ){ | 326 | while( (fi=it.current() ) ){ |
327 | if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){ | 327 | if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ){ |
328 | ++it; | 328 | ++it; |
329 | continue; | 329 | continue; |
330 | } | 330 | } |
331 | 331 | ||
332 | /* | 332 | /* |
333 | * It is a symlink we try to resolve it now but don't let us attack by DOS | 333 | * It is a symlink we try to resolve it now but don't let us attack by DOS |
334 | * | 334 | * |
335 | */ | 335 | */ |
336 | if( fi->isSymLink() ){ | 336 | if( fi->isSymLink() ){ |
337 | QString file = fi->dirPath( true ) + "/" + fi->readLink(); | 337 | QString file = fi->dirPath( true ) + "/" + fi->readLink(); |
338 | for( int i = 0; i<=4; i++) { // 5 tries to prevent dos | 338 | for( int i = 0; i<=4; i++) { // 5 tries to prevent dos |
339 | QFileInfo info( file ); | 339 | QFileInfo info( file ); |
340 | if( !info.exists() ){ | 340 | if( !info.exists() ){ |
341 | addSymlink( fi, TRUE ); | 341 | addSymlink( fi, TRUE ); |
342 | break; | 342 | break; |
343 | }else if( info.isDir() ){ | 343 | }else if( info.isDir() ){ |
344 | addDir( fi, TRUE ); | 344 | addDir( fi, TRUE ); |
345 | break; | 345 | break; |
346 | }else if( info.isFile() ){ | 346 | }else if( info.isFile() ){ |
347 | addFile( fi, TRUE ); | 347 | addFile( fi, TRUE ); |
348 | break; | 348 | break; |
349 | }else if( info.isSymLink() ){ | 349 | }else if( info.isSymLink() ){ |
350 | file = info.dirPath(true ) + "/" + info.readLink() ; | 350 | file = info.dirPath(true ) + "/" + info.readLink() ; |
351 | break; | 351 | break; |
352 | }else if( i == 4){ // couldn't resolve symlink add it as symlink | 352 | }else if( i == 4){ // couldn't resolve symlink add it as symlink |
353 | addSymlink( fi ); | 353 | addSymlink( fi ); |
354 | } | 354 | } |
355 | } // off for loop for symlink resolving | 355 | } // off for loop for symlink resolving |
356 | }else if( fi->isDir() ) | 356 | }else if( fi->isDir() ) |
357 | addDir( fi ); | 357 | addDir( fi ); |
358 | else if( fi->isFile() ) | 358 | else if( fi->isFile() ) |
359 | addFile( fi ); | 359 | addFile( fi ); |
360 | 360 | ||
361 | ++it; | 361 | ++it; |
362 | } // of while loop | 362 | } // of while loop |
363 | m_view->sort(); | 363 | m_view->sort(); |
364 | 364 | ||
365 | } | 365 | } |
366 | int OFileViewFileListView::fileCount()const{ | 366 | int OFileViewFileListView::fileCount()const{ |
367 | return m_view->childCount(); | 367 | return m_view->childCount(); |
368 | } | 368 | } |
369 | QString OFileViewFileListView::currentDir()const{ | 369 | QString OFileViewFileListView::currentDir()const{ |
370 | return m_currentDir; | 370 | return m_currentDir; |
371 | } | 371 | } |
372 | OFileSelector* OFileViewFileListView::selector() { | 372 | OFileSelector* OFileViewFileListView::selector() { |
373 | return m_sel; | 373 | return m_sel; |
374 | } | 374 | } |
375 | 375 | ||
376 | bool OFileViewFileListView::eventFilter (QObject *o, QEvent *e) { | 376 | bool OFileViewFileListView::eventFilter (QObject *o, QEvent *e) { |
377 | if ( e->type() == QEvent::KeyPress ) { | 377 | if ( e->type() == QEvent::KeyPress ) { |
378 | QKeyEvent *k = (QKeyEvent *)e; | 378 | QKeyEvent *k = (QKeyEvent *)e; |
379 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) { | 379 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) { |
380 | slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); | 380 | slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); |
381 | return true; | 381 | return true; |
382 | } | 382 | } |
383 | } | 383 | } |
384 | return false; | 384 | return false; |
385 | } | 385 | } |
386 | 386 | ||
387 | 387 | ||
388 | void OFileViewFileListView::connectSlots() { | 388 | void OFileViewFileListView::connectSlots() { |
389 | connect(m_view, SIGNAL(clicked(QListViewItem*) ), | 389 | connect(m_view, SIGNAL(clicked(QListViewItem*) ), |
390 | this, SLOT(slotCurrentChanged(QListViewItem*) ) ); | 390 | this, SLOT(slotCurrentChanged(QListViewItem*) ) ); |
391 | connect(m_view, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint&, int ) ), | 391 | connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ), |
392 | this, SLOT(slotClicked(int, QListViewItem*, const QPoint&, int ) ) ); | 392 | this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) ); |
393 | } | 393 | } |
394 | void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) { | 394 | void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) { |
395 | if (!item) | 395 | if (!item) |
396 | return; | 396 | return; |
397 | #if 0 | 397 | #if 0 |
398 | 398 | ||
399 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); | 399 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); |
400 | 400 | ||
401 | if (!sel->isDir() ) { | 401 | if (!sel->isDir() ) { |
402 | selector()->m_lneEdit->setText( sel->text(1) ); | 402 | selector()->m_lneEdit->setText( sel->text(1) ); |
403 | // if in fileselector mode we will emit selected | 403 | // if in fileselector mode we will emit selected |
404 | if ( selector()->mode() == OFileSelector::FileSelector ) { | 404 | if ( selector()->mode() == OFileSelector::FileSelector ) { |
405 | qWarning("slot Current Changed"); | 405 | qWarning("slot Current Changed"); |
406 | QStringList str = QStringList::split("->", sel->text(1) ); | 406 | QStringList str = QStringList::split("->", sel->text(1) ); |
407 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); | 407 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); |
408 | emit selector()->fileSelected( path ); | 408 | emit selector()->fileSelected( path ); |
409 | DocLnk lnk( path ); | 409 | DocLnk lnk( path ); |
410 | emit selector()->fileSelected( lnk ); | 410 | emit selector()->fileSelected( lnk ); |
411 | } | 411 | } |
412 | } | 412 | } |
413 | #endif | 413 | #endif |
414 | } | 414 | } |
415 | void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) { | 415 | void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) { |
416 | if (!item || ( button != Qt::LeftButton) ) | 416 | if (!item || ( button != Qt::LeftButton) ) |
417 | return; | 417 | return; |
418 | 418 | ||
419 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); | 419 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); |
420 | if (!sel->isLocked() ) { | 420 | if (!sel->isLocked() ) { |
421 | QStringList str = QStringList::split("->", sel->text(1) ); | 421 | QStringList str = QStringList::split("->", sel->text(1) ); |
422 | if (sel->isDir() ) { | 422 | if (sel->isDir() ) { |
423 | m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); | 423 | m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); |
424 | emit selector()->dirSelected( m_currentDir ); | 424 | emit selector()->dirSelected( m_currentDir ); |
425 | reread( m_all ); | 425 | reread( m_all ); |
426 | }else { // file | 426 | }else { // file |
427 | qWarning("slot Clicked"); | 427 | qWarning("slot Clicked"); |
428 | selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); | 428 | selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); |
429 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); | 429 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); |
430 | emit selector()->fileSelected( path ); | 430 | emit selector()->fileSelected( path ); |
431 | DocLnk lnk( path ); | 431 | DocLnk lnk( path ); |
432 | emit selector()->fileSelected( lnk ); | 432 | emit selector()->fileSelected( lnk ); |
433 | } | 433 | } |
434 | } // not locked | 434 | } // not locked |
435 | } | 435 | } |
436 | void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) { | 436 | void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) { |
437 | MimeType type( info->absFilePath() ); | 437 | MimeType type( info->absFilePath() ); |
438 | if (!compliesMime( type.id() ) ) | 438 | if (!compliesMime( type.id() ) ) |
439 | return; | 439 | return; |
440 | 440 | ||
441 | QPixmap pix = type.pixmap(); | 441 | QPixmap pix = type.pixmap(); |
442 | QString dir, name; bool locked; | 442 | QString dir, name; bool locked; |
443 | if ( pix.isNull() ) { | 443 | if ( pix.isNull() ) { |
444 | QWMatrix matrix; | 444 | QWMatrix matrix; |
445 | QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); | 445 | QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); |
446 | matrix.scale( .4, .4 ); | 446 | matrix.scale( .4, .4 ); |
447 | pix = pixer.xForm( matrix ); | 447 | pix = pixer.xForm( matrix ); |
448 | } | 448 | } |
449 | dir = info->dirPath( true ); | 449 | dir = info->dirPath( true ); |
450 | locked = false; | 450 | locked = false; |
451 | if ( symlink ) | 451 | if ( symlink ) |
452 | name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); | 452 | name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); |
453 | else{ | 453 | else{ |
454 | name = info->fileName(); | 454 | name = info->fileName(); |
455 | if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || | 455 | if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || |
456 | ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) { | 456 | ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) { |
457 | locked = true; pix = Resource::loadPixmap("locked"); | 457 | locked = true; pix = Resource::loadPixmap("locked"); |
458 | } | 458 | } |
459 | } | 459 | } |
460 | (void)new OFileSelectorItem( m_view, pix, name, | 460 | (void)new OFileSelectorItem( m_view, pix, name, |
461 | info->lastModified().toString(), QString::number( info->size() ), | 461 | info->lastModified().toString(), QString::number( info->size() ), |
462 | dir, locked ); | 462 | dir, locked ); |
463 | } | 463 | } |
464 | void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) { | 464 | void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) { |
465 | bool locked = false; QString name; QPixmap pix; | 465 | bool locked = false; QString name; QPixmap pix; |
466 | 466 | ||
467 | if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || | 467 | if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || |
468 | ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) { | 468 | ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) { |
469 | locked = true; | 469 | locked = true; |
470 | if ( symlink ) | 470 | if ( symlink ) |
471 | pix = Resource::loadPixmap( "opie/symlink" ); | 471 | pix = Resource::loadPixmap( "opie/symlink" ); |
472 | else | 472 | else |
473 | pix = Resource::loadPixmap( "lockedfolder" ); | 473 | pix = Resource::loadPixmap( "lockedfolder" ); |
474 | }else | 474 | }else |
475 | pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder"); | 475 | pix = symlink ? Resource::loadPixmap( "opie/symlink") : Resource::loadPixmap("folder"); |
476 | 476 | ||
477 | name = symlink ? info->fileName() + " -> " + info->dirPath(true) + "/" + info->readLink() : | 477 | name = symlink ? info->fileName() + " -> " + info->dirPath(true) + "/" + info->readLink() : |
478 | info->fileName(); | 478 | info->fileName(); |
479 | 479 | ||
480 | (void)new OFileSelectorItem( m_view, pix, name, | 480 | (void)new OFileSelectorItem( m_view, pix, name, |
481 | info->lastModified().toString(), | 481 | info->lastModified().toString(), |
482 | QString::number( info->size() ), | 482 | QString::number( info->size() ), |
483 | info->dirPath( true ), locked, true ); | 483 | info->dirPath( true ), locked, true ); |
484 | 484 | ||
485 | 485 | ||
486 | } | 486 | } |
487 | void OFileViewFileListView::addSymlink( QFileInfo* , bool ) { | 487 | void OFileViewFileListView::addSymlink( QFileInfo* , bool ) { |
488 | 488 | ||
@@ -687,194 +687,194 @@ OFileSelector::OFileSelector( QWidget* parent, int mode, int sel, | |||
687 | str = QObject::tr("All Files"); | 687 | str = QObject::tr("All Files"); |
688 | m_cmbView->setCurrentItem( 2 ); | 688 | m_cmbView->setCurrentItem( 2 ); |
689 | break; | 689 | break; |
690 | } | 690 | } |
691 | slotViewChange( str ); | 691 | slotViewChange( str ); |
692 | 692 | ||
693 | } | 693 | } |
694 | 694 | ||
695 | /** | 695 | /** |
696 | * This a convience c'tor to just substitute the use of FileSelector | 696 | * This a convience c'tor to just substitute the use of FileSelector |
697 | */ | 697 | */ |
698 | OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name, | 698 | OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name, |
699 | bool showNew, bool showClose ) | 699 | bool showNew, bool showClose ) |
700 | : QWidget( parent, name ) | 700 | : QWidget( parent, name ) |
701 | { | 701 | { |
702 | m_current = 0; | 702 | m_current = 0; |
703 | m_shNew = showNew; | 703 | m_shNew = showNew; |
704 | m_shClose = showClose; | 704 | m_shClose = showClose; |
705 | m_startDir = QPEApplication::documentDir(); | 705 | m_startDir = QPEApplication::documentDir(); |
706 | 706 | ||
707 | if (!mimeFilter.isEmpty() ) | 707 | if (!mimeFilter.isEmpty() ) |
708 | m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) ); | 708 | m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) ); |
709 | 709 | ||
710 | m_mode = OFileSelector::FileSelector; | 710 | m_mode = OFileSelector::FileSelector; |
711 | m_selector = OFileSelector::Normal; | 711 | m_selector = OFileSelector::Normal; |
712 | 712 | ||
713 | initUI(); | 713 | initUI(); |
714 | initMime(); | 714 | initMime(); |
715 | initViews(); | 715 | initViews(); |
716 | m_cmbView->setCurrentItem( 0 ); | 716 | m_cmbView->setCurrentItem( 0 ); |
717 | slotViewChange( QObject::tr("Documents") ); | 717 | slotViewChange( QObject::tr("Documents") ); |
718 | } | 718 | } |
719 | /* | 719 | /* |
720 | * INIT UI will set up the basic GUI | 720 | * INIT UI will set up the basic GUI |
721 | * Layout: Simple VBoxLayout | 721 | * Layout: Simple VBoxLayout |
722 | * On top a WidgetStack containing the Views... | 722 | * On top a WidgetStack containing the Views... |
723 | * - List View | 723 | * - List View |
724 | * - Document View | 724 | * - Document View |
725 | * Below we will have a Label + LineEdit | 725 | * Below we will have a Label + LineEdit |
726 | * Below we will have two ComoBoxes one for choosing the view one for | 726 | * Below we will have two ComoBoxes one for choosing the view one for |
727 | * choosing the mimetype | 727 | * choosing the mimetype |
728 | */ | 728 | */ |
729 | void OFileSelector::initUI() { | 729 | void OFileSelector::initUI() { |
730 | QVBoxLayout* lay = new QVBoxLayout( this ); | 730 | QVBoxLayout* lay = new QVBoxLayout( this ); |
731 | 731 | ||
732 | m_stack = new QWidgetStack( this ); | 732 | m_stack = new QWidgetStack( this ); |
733 | lay->addWidget( m_stack, 1000 ); | 733 | lay->addWidget( m_stack, 1000 ); |
734 | 734 | ||
735 | m_nameBox = new QHBox( this ); | 735 | m_nameBox = new QHBox( this ); |
736 | (void)new QLabel( tr("Name:"), m_nameBox ); | 736 | (void)new QLabel( tr("Name:"), m_nameBox ); |
737 | m_lneEdit = new QLineEdit( m_nameBox ); | 737 | m_lneEdit = new QLineEdit( m_nameBox ); |
738 | m_lneEdit ->installEventFilter(this); | 738 | m_lneEdit ->installEventFilter(this); |
739 | lay->addWidget( m_nameBox ); | 739 | lay->addWidget( m_nameBox ); |
740 | 740 | ||
741 | m_cmbBox = new QHBox( this ); | 741 | m_cmbBox = new QHBox( this ); |
742 | m_cmbView = new QComboBox( m_cmbBox ); | 742 | m_cmbView = new QComboBox( m_cmbBox ); |
743 | m_cmbMime = new QComboBox( m_cmbBox ); | 743 | m_cmbMime = new QComboBox( m_cmbBox ); |
744 | lay->addWidget( m_cmbBox ); | 744 | lay->addWidget( m_cmbBox ); |
745 | } | 745 | } |
746 | 746 | ||
747 | /* | 747 | /* |
748 | * This will make sure that the return key in the name edit causes dialogs to close | 748 | * This will make sure that the return key in the name edit causes dialogs to close |
749 | */ | 749 | */ |
750 | 750 | ||
751 | bool OFileSelector::eventFilter (QObject *o, QEvent *e) { | 751 | bool OFileSelector::eventFilter (QObject *o, QEvent *e) { |
752 | if ( e->type() == QEvent::KeyPress ) { | 752 | if ( e->type() == QEvent::KeyPress ) { |
753 | QKeyEvent *k = (QKeyEvent *)e; | 753 | QKeyEvent *k = (QKeyEvent *)e; |
754 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) { | 754 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) { |
755 | emit ok(); | 755 | emit ok(); |
756 | return true; | 756 | return true; |
757 | } | 757 | } |
758 | } | 758 | } |
759 | return false; | 759 | return false; |
760 | } | 760 | } |
761 | 761 | ||
762 | /* | 762 | /* |
763 | * This will insert the MimeTypes into the Combo Box | 763 | * This will insert the MimeTypes into the Combo Box |
764 | * And also connect the changed signal | 764 | * And also connect the changed signal |
765 | * | 765 | * |
766 | * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes | 766 | * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes |
767 | */ | 767 | */ |
768 | void OFileSelector::initMime() { | 768 | void OFileSelector::initMime() { |
769 | MimeTypes::Iterator it; | 769 | MimeTypes::Iterator it; |
770 | for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) { | 770 | for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) { |
771 | m_cmbMime->insertItem( it.key() ); | 771 | m_cmbMime->insertItem( it.key() ); |
772 | } | 772 | } |
773 | m_cmbMime->setCurrentItem( 0 ); | 773 | m_cmbMime->setCurrentItem( 0 ); |
774 | 774 | ||
775 | connect( m_cmbMime, SIGNAL(activated(int) ), | 775 | connect( m_cmbMime, SIGNAL(activated(int) ), |
776 | this, SLOT(slotMimeTypeChanged() ) ); | 776 | this, SLOT(slotMimeTypeChanged() ) ); |
777 | 777 | ||
778 | } | 778 | } |
779 | void OFileSelector::initViews() { | 779 | void OFileSelector::initViews() { |
780 | m_cmbView->insertItem( QObject::tr("Documents") ); | 780 | m_cmbView->insertItem( QObject::tr("Documents") ); |
781 | m_cmbView->insertItem( QObject::tr("Files") ); | 781 | m_cmbView->insertItem( QObject::tr("Files") ); |
782 | m_cmbView->insertItem( QObject::tr("All Files") ); | 782 | m_cmbView->insertItem( QObject::tr("All Files") ); |
783 | connect(m_cmbView, SIGNAL(activated( const QString& ) ), | 783 | connect(m_cmbView, SIGNAL(activated(const QString&) ), |
784 | this, SLOT(slotViewChange( const QString& ) ) ); | 784 | this, SLOT(slotViewChange(const QString&) ) ); |
785 | 785 | ||
786 | 786 | ||
787 | m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) ); | 787 | m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) ); |
788 | 788 | ||
789 | /* see above why add both */ | 789 | /* see above why add both */ |
790 | OFileViewInterface* in = new OFileViewFileSystem( this ); | 790 | OFileViewInterface* in = new OFileViewFileSystem( this ); |
791 | m_views.insert( QObject::tr("Files"), in ); | 791 | m_views.insert( QObject::tr("Files"), in ); |
792 | m_views.insert( QObject::tr("All Files"), in ); | 792 | m_views.insert( QObject::tr("All Files"), in ); |
793 | } | 793 | } |
794 | 794 | ||
795 | /** | 795 | /** |
796 | * d'tor | 796 | * d'tor |
797 | */ | 797 | */ |
798 | OFileSelector::~OFileSelector() { | 798 | OFileSelector::~OFileSelector() { |
799 | 799 | ||
800 | } | 800 | } |
801 | 801 | ||
802 | /** | 802 | /** |
803 | * Convience function for the fileselector | 803 | * Convience function for the fileselector |
804 | * make sure to delete the DocLnk | 804 | * make sure to delete the DocLnk |
805 | * | 805 | * |
806 | * @see DocLnk | 806 | * @see DocLnk |
807 | * @todo remove in ODP | 807 | * @todo remove in ODP |
808 | */ | 808 | */ |
809 | const DocLnk* OFileSelector::selected() { | 809 | const DocLnk* OFileSelector::selected() { |
810 | DocLnk* lnk = new DocLnk( currentView()->selectedDocument() ); | 810 | DocLnk* lnk = new DocLnk( currentView()->selectedDocument() ); |
811 | return lnk; | 811 | return lnk; |
812 | } | 812 | } |
813 | 813 | ||
814 | /** | 814 | /** |
815 | * | 815 | * |
816 | * @return the name of the selected file | 816 | * @return the name of the selected file |
817 | */ | 817 | */ |
818 | QString OFileSelector::selectedName()const{ | 818 | QString OFileSelector::selectedName()const{ |
819 | return currentView()->selectedName(); | 819 | return currentView()->selectedName(); |
820 | } | 820 | } |
821 | 821 | ||
822 | /** | 822 | /** |
823 | * @return the selected path | 823 | * @return the selected path |
824 | */ | 824 | */ |
825 | QString OFileSelector::selectedPath()const { | 825 | QString OFileSelector::selectedPath()const { |
826 | return currentView()->selectedPath(); | 826 | return currentView()->selectedPath(); |
827 | } | 827 | } |
828 | 828 | ||
829 | /** | 829 | /** |
830 | * @return the directory name | 830 | * @return the directory name |
831 | */ | 831 | */ |
832 | QString OFileSelector::directory()const { | 832 | QString OFileSelector::directory()const { |
833 | return currentView()->directory(); | 833 | return currentView()->directory(); |
834 | } | 834 | } |
835 | 835 | ||
836 | /** | 836 | /** |
837 | * @return a DocLnk for the selected document | 837 | * @return a DocLnk for the selected document |
838 | */ | 838 | */ |
839 | DocLnk OFileSelector::selectedDocument()const { | 839 | DocLnk OFileSelector::selectedDocument()const { |
840 | return currentView()->selectedDocument(); | 840 | return currentView()->selectedDocument(); |
841 | } | 841 | } |
842 | 842 | ||
843 | /** | 843 | /** |
844 | * @return the number of items for the current view | 844 | * @return the number of items for the current view |
845 | */ | 845 | */ |
846 | int OFileSelector::fileCount()const { | 846 | int OFileSelector::fileCount()const { |
847 | return currentView()->fileCount(); | 847 | return currentView()->fileCount(); |
848 | } | 848 | } |
849 | 849 | ||
850 | /** | 850 | /** |
851 | * @return reparse the file content | 851 | * @return reparse the file content |
852 | */ | 852 | */ |
853 | void OFileSelector::reread() { | 853 | void OFileSelector::reread() { |
854 | return currentView()->reread(); | 854 | return currentView()->reread(); |
855 | } | 855 | } |
856 | OFileViewInterface* OFileSelector::currentView()const{ | 856 | OFileViewInterface* OFileSelector::currentView()const{ |
857 | return m_current; | 857 | return m_current; |
858 | } | 858 | } |
859 | bool OFileSelector::showNew()const { | 859 | bool OFileSelector::showNew()const { |
860 | return m_shNew; | 860 | return m_shNew; |
861 | } | 861 | } |
862 | bool OFileSelector::showClose()const { | 862 | bool OFileSelector::showClose()const { |
863 | return m_shClose; | 863 | return m_shClose; |
864 | } | 864 | } |
865 | MimeTypes OFileSelector::mimeTypes()const { | 865 | MimeTypes OFileSelector::mimeTypes()const { |
866 | return m_mimeType; | 866 | return m_mimeType; |
867 | } | 867 | } |
868 | 868 | ||
869 | /** | 869 | /** |
870 | * @return the Mode of the OFileSelector | 870 | * @return the Mode of the OFileSelector |
871 | */ | 871 | */ |
872 | int OFileSelector::mode()const{ | 872 | int OFileSelector::mode()const{ |
873 | return m_mode; | 873 | return m_mode; |
874 | } | 874 | } |
875 | 875 | ||
876 | /** | 876 | /** |
877 | * @return the Selector of the OFileSelector | 877 | * @return the Selector of the OFileSelector |
878 | */ | 878 | */ |
879 | int OFileSelector::selector()const{ | 879 | int OFileSelector::selector()const{ |
880 | return m_selector; | 880 | return m_selector; |
diff --git a/libopie/ofontselector.cpp b/libopie/ofontselector.cpp index 7e07008..87b7869 100644 --- a/libopie/ofontselector.cpp +++ b/libopie/ofontselector.cpp | |||
@@ -26,207 +26,207 @@ | |||
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include <qlayout.h> | 29 | #include <qlayout.h> |
30 | #include <qlistbox.h> | 30 | #include <qlistbox.h> |
31 | #include <qcombobox.h> | 31 | #include <qcombobox.h> |
32 | #include <qlabel.h> | 32 | #include <qlabel.h> |
33 | #include <qmultilineedit.h> | 33 | #include <qmultilineedit.h> |
34 | 34 | ||
35 | #include <qpe/fontdatabase.h> | 35 | #include <qpe/fontdatabase.h> |
36 | 36 | ||
37 | #include "ofontselector.h" | 37 | #include "ofontselector.h" |
38 | 38 | ||
39 | class OFontSelectorPrivate { | 39 | class OFontSelectorPrivate { |
40 | public: | 40 | public: |
41 | QListBox * m_font_family_list; | 41 | QListBox * m_font_family_list; |
42 | QComboBox * m_font_style_list; | 42 | QComboBox * m_font_style_list; |
43 | QComboBox * m_font_size_list; | 43 | QComboBox * m_font_size_list; |
44 | QMultiLineEdit *m_preview; | 44 | QMultiLineEdit *m_preview; |
45 | 45 | ||
46 | bool m_pointbug : 1; | 46 | bool m_pointbug : 1; |
47 | 47 | ||
48 | FontDatabase m_fdb; | 48 | FontDatabase m_fdb; |
49 | }; | 49 | }; |
50 | 50 | ||
51 | namespace { | 51 | namespace { |
52 | 52 | ||
53 | class FontListItem : public QListBoxText { | 53 | class FontListItem : public QListBoxText { |
54 | public: | 54 | public: |
55 | FontListItem ( const QString &t, const QStringList &styles, const QValueList<int> &sizes ) : QListBoxText ( ) | 55 | FontListItem ( const QString &t, const QStringList &styles, const QValueList<int> &sizes ) : QListBoxText ( ) |
56 | { | 56 | { |
57 | m_name = t; | 57 | m_name = t; |
58 | m_styles = styles; | 58 | m_styles = styles; |
59 | m_sizes = sizes; | 59 | m_sizes = sizes; |
60 | 60 | ||
61 | QString str = t; | 61 | QString str = t; |
62 | str [0] = str [0]. upper ( ); | 62 | str [0] = str [0]. upper ( ); |
63 | setText ( str ); | 63 | setText ( str ); |
64 | } | 64 | } |
65 | 65 | ||
66 | QString family ( ) const | 66 | QString family ( ) const |
67 | { | 67 | { |
68 | return m_name; | 68 | return m_name; |
69 | } | 69 | } |
70 | 70 | ||
71 | const QStringList &styles ( ) const | 71 | const QStringList &styles ( ) const |
72 | { | 72 | { |
73 | return m_styles; | 73 | return m_styles; |
74 | } | 74 | } |
75 | 75 | ||
76 | const QValueList<int> &sizes ( ) const | 76 | const QValueList<int> &sizes ( ) const |
77 | { | 77 | { |
78 | return m_sizes; | 78 | return m_sizes; |
79 | } | 79 | } |
80 | 80 | ||
81 | private: | 81 | private: |
82 | QStringList m_styles; | 82 | QStringList m_styles; |
83 | QValueList<int> m_sizes; | 83 | QValueList<int> m_sizes; |
84 | QString m_name; | 84 | QString m_name; |
85 | }; | 85 | }; |
86 | 86 | ||
87 | 87 | ||
88 | static int findItemCB ( QComboBox *box, const QString &str ) | 88 | static int findItemCB ( QComboBox *box, const QString &str ) |
89 | { | 89 | { |
90 | for ( int i = 0; i < box-> count ( ); i++ ) { | 90 | for ( int i = 0; i < box-> count ( ); i++ ) { |
91 | if ( box-> text ( i ) == str ) | 91 | if ( box-> text ( i ) == str ) |
92 | return i; | 92 | return i; |
93 | } | 93 | } |
94 | return -1; | 94 | return -1; |
95 | } | 95 | } |
96 | 96 | ||
97 | } | 97 | } |
98 | /* static same as anon. namespace */ | 98 | /* static same as anon. namespace */ |
99 | static int qt_version ( ) | 99 | static int qt_version ( ) |
100 | { | 100 | { |
101 | const char *qver = qVersion ( ); | 101 | const char *qver = qVersion ( ); |
102 | 102 | ||
103 | return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); | 103 | return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); |
104 | } | 104 | } |
105 | 105 | ||
106 | /** | 106 | /** |
107 | * Constructs the Selector object | 107 | * Constructs the Selector object |
108 | * @param withpreview If a font preview should be given | 108 | * @param withpreview If a font preview should be given |
109 | * @param parent The parent of the Font Selector | 109 | * @param parent The parent of the Font Selector |
110 | * @param name The name of the object | 110 | * @param name The name of the object |
111 | * @param fl WidgetFlags | 111 | * @param fl WidgetFlags |
112 | */ | 112 | */ |
113 | OFontSelector::OFontSelector ( bool withpreview, QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl ) | 113 | OFontSelector::OFontSelector ( bool withpreview, QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl ) |
114 | { | 114 | { |
115 | d = new OFontSelectorPrivate ( ); | 115 | d = new OFontSelectorPrivate ( ); |
116 | 116 | ||
117 | QGridLayout *gridLayout = new QGridLayout ( this, 0, 0, 4, 4 ); | 117 | QGridLayout *gridLayout = new QGridLayout ( this, 0, 0, 4, 4 ); |
118 | gridLayout->setRowStretch ( 4, 10 ); | 118 | gridLayout->setRowStretch ( 4, 10 ); |
119 | 119 | ||
120 | d-> m_font_family_list = new QListBox( this, "FontListBox" ); | 120 | d-> m_font_family_list = new QListBox( this, "FontListBox" ); |
121 | gridLayout->addMultiCellWidget( d-> m_font_family_list, 0, 4, 0, 0 ); | 121 | gridLayout->addMultiCellWidget( d-> m_font_family_list, 0, 4, 0, 0 ); |
122 | connect( d-> m_font_family_list, SIGNAL( highlighted( int ) ), this, SLOT( fontFamilyClicked( int ) ) ); | 122 | connect( d-> m_font_family_list, SIGNAL( highlighted(int) ), this, SLOT( fontFamilyClicked(int) ) ); |
123 | 123 | ||
124 | QLabel *label = new QLabel( tr( "Style" ), this ); | 124 | QLabel *label = new QLabel( tr( "Style" ), this ); |
125 | gridLayout->addWidget( label, 0, 1 ); | 125 | gridLayout->addWidget( label, 0, 1 ); |
126 | 126 | ||
127 | d-> m_font_style_list = new QComboBox( this, "StyleListBox" ); | 127 | d-> m_font_style_list = new QComboBox( this, "StyleListBox" ); |
128 | connect( d-> m_font_style_list, SIGNAL( activated( int ) ), this, SLOT( fontStyleClicked( int ) ) ); | 128 | connect( d-> m_font_style_list, SIGNAL( activated(int) ), this, SLOT( fontStyleClicked(int) ) ); |
129 | gridLayout->addWidget( d-> m_font_style_list, 1, 1 ); | 129 | gridLayout->addWidget( d-> m_font_style_list, 1, 1 ); |
130 | 130 | ||
131 | label = new QLabel( tr( "Size" ), this ); | 131 | label = new QLabel( tr( "Size" ), this ); |
132 | gridLayout->addWidget( label, 2, 1 ); | 132 | gridLayout->addWidget( label, 2, 1 ); |
133 | 133 | ||
134 | d-> m_font_size_list = new QComboBox( this, "SizeListBox" ); | 134 | d-> m_font_size_list = new QComboBox( this, "SizeListBox" ); |
135 | connect( d-> m_font_size_list, SIGNAL( activated( int ) ), | 135 | connect( d-> m_font_size_list, SIGNAL( activated(int) ), |
136 | this, SLOT( fontSizeClicked( int ) ) ); | 136 | this, SLOT( fontSizeClicked(int) ) ); |
137 | gridLayout->addWidget( d-> m_font_size_list, 3, 1 ); | 137 | gridLayout->addWidget( d-> m_font_size_list, 3, 1 ); |
138 | 138 | ||
139 | d-> m_pointbug = ( qt_version ( ) <= 233 ); | 139 | d-> m_pointbug = ( qt_version ( ) <= 233 ); |
140 | 140 | ||
141 | if ( withpreview ) { | 141 | if ( withpreview ) { |
142 | d-> m_preview = new QMultiLineEdit ( this, "Preview" ); | 142 | d-> m_preview = new QMultiLineEdit ( this, "Preview" ); |
143 | d-> m_preview-> setAlignment ( AlignCenter ); | 143 | d-> m_preview-> setAlignment ( AlignCenter ); |
144 | d-> m_preview-> setWordWrap ( QMultiLineEdit::WidgetWidth ); | 144 | d-> m_preview-> setWordWrap ( QMultiLineEdit::WidgetWidth ); |
145 | d-> m_preview-> setMargin ( 3 ); | 145 | d-> m_preview-> setMargin ( 3 ); |
146 | d-> m_preview-> setText ( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" )); | 146 | d-> m_preview-> setText ( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" )); |
147 | gridLayout-> addRowSpacing ( 5, 4 ); | 147 | gridLayout-> addRowSpacing ( 5, 4 ); |
148 | gridLayout-> addMultiCellWidget ( d-> m_preview, 6, 6, 0, 1 ); | 148 | gridLayout-> addMultiCellWidget ( d-> m_preview, 6, 6, 0, 1 ); |
149 | gridLayout-> setRowStretch ( 6, 5 ); | 149 | gridLayout-> setRowStretch ( 6, 5 ); |
150 | } | 150 | } |
151 | else | 151 | else |
152 | d-> m_preview = 0; | 152 | d-> m_preview = 0; |
153 | 153 | ||
154 | loadFonts ( d-> m_font_family_list ); | 154 | loadFonts ( d-> m_font_family_list ); |
155 | } | 155 | } |
156 | 156 | ||
157 | OFontSelector::~OFontSelector ( ) | 157 | OFontSelector::~OFontSelector ( ) |
158 | { | 158 | { |
159 | delete d; | 159 | delete d; |
160 | } | 160 | } |
161 | 161 | ||
162 | /** | 162 | /** |
163 | * This methods tries to set the font | 163 | * This methods tries to set the font |
164 | * @param f The wishes font | 164 | * @param f The wishes font |
165 | * @return success or failure | 165 | * @return success or failure |
166 | */ | 166 | */ |
167 | bool OFontSelector::setSelectedFont ( const QFont &f ) | 167 | bool OFontSelector::setSelectedFont ( const QFont &f ) |
168 | { | 168 | { |
169 | return setSelectedFont ( f. family ( ), d-> m_fdb. styleString ( f ), f. pointSize ( ), QFont::encodingName ( f. charSet ( ))); | 169 | return setSelectedFont ( f. family ( ), d-> m_fdb. styleString ( f ), f. pointSize ( ), QFont::encodingName ( f. charSet ( ))); |
170 | } | 170 | } |
171 | 171 | ||
172 | 172 | ||
173 | /** | 173 | /** |
174 | * This is an overloaded method @see setSelectedFont | 174 | * This is an overloaded method @see setSelectedFont |
175 | * @param familyStr The family of the font | 175 | * @param familyStr The family of the font |
176 | * @param styleStr The style of the font | 176 | * @param styleStr The style of the font |
177 | * @param sizeVal The size of font | 177 | * @param sizeVal The size of font |
178 | * @param charset The charset to be used. Will be deprecated by QT3 | 178 | * @param charset The charset to be used. Will be deprecated by QT3 |
179 | */ | 179 | */ |
180 | bool OFontSelector::setSelectedFont ( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & charset ) | 180 | bool OFontSelector::setSelectedFont ( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & charset ) |
181 | { | 181 | { |
182 | QString sizeStr = QString::number ( sizeVal ); | 182 | QString sizeStr = QString::number ( sizeVal ); |
183 | 183 | ||
184 | QListBoxItem *family = d-> m_font_family_list-> findItem ( familyStr ); | 184 | QListBoxItem *family = d-> m_font_family_list-> findItem ( familyStr ); |
185 | if ( !family ) | 185 | if ( !family ) |
186 | family = d-> m_font_family_list-> findItem ( "Helvetica" ); | 186 | family = d-> m_font_family_list-> findItem ( "Helvetica" ); |
187 | if ( !family ) | 187 | if ( !family ) |
188 | family = d-> m_font_family_list-> firstItem ( ); | 188 | family = d-> m_font_family_list-> firstItem ( ); |
189 | d-> m_font_family_list-> setCurrentItem ( family ); | 189 | d-> m_font_family_list-> setCurrentItem ( family ); |
190 | fontFamilyClicked ( d-> m_font_family_list-> index ( family )); | 190 | fontFamilyClicked ( d-> m_font_family_list-> index ( family )); |
191 | 191 | ||
192 | int style = findItemCB ( d-> m_font_style_list, styleStr ); | 192 | int style = findItemCB ( d-> m_font_style_list, styleStr ); |
193 | if ( style < 0 ) | 193 | if ( style < 0 ) |
194 | style = findItemCB ( d-> m_font_style_list, "Regular" ); | 194 | style = findItemCB ( d-> m_font_style_list, "Regular" ); |
195 | if ( style < 0 && d-> m_font_style_list-> count ( ) > 0 ) | 195 | if ( style < 0 && d-> m_font_style_list-> count ( ) > 0 ) |
196 | style = 0; | 196 | style = 0; |
197 | d-> m_font_style_list-> setCurrentItem ( style ); | 197 | d-> m_font_style_list-> setCurrentItem ( style ); |
198 | fontStyleClicked ( style ); | 198 | fontStyleClicked ( style ); |
199 | 199 | ||
200 | int size = findItemCB ( d-> m_font_size_list, sizeStr ); | 200 | int size = findItemCB ( d-> m_font_size_list, sizeStr ); |
201 | if ( size < 0 ) | 201 | if ( size < 0 ) |
202 | size = findItemCB ( d-> m_font_size_list, "10" ); | 202 | size = findItemCB ( d-> m_font_size_list, "10" ); |
203 | if ( size < 0 && d-> m_font_size_list-> count ( ) > 0 ) | 203 | if ( size < 0 && d-> m_font_size_list-> count ( ) > 0 ) |
204 | size = 0; | 204 | size = 0; |
205 | d-> m_font_size_list-> setCurrentItem ( size ); | 205 | d-> m_font_size_list-> setCurrentItem ( size ); |
206 | fontSizeClicked ( size ); | 206 | fontSizeClicked ( size ); |
207 | 207 | ||
208 | return (( family ) && ( style >= 0 ) && ( size >= 0 )); | 208 | return (( family ) && ( style >= 0 ) && ( size >= 0 )); |
209 | } | 209 | } |
210 | 210 | ||
211 | /** | 211 | /** |
212 | * This method returns the name, style and size of the currently selected | 212 | * This method returns the name, style and size of the currently selected |
213 | * font or false if no font is selected | 213 | * font or false if no font is selected |
214 | * @param family The font family will be written there | 214 | * @param family The font family will be written there |
215 | * @param style The style will be written there | 215 | * @param style The style will be written there |
216 | * @param size The size will be written there | 216 | * @param size The size will be written there |
217 | * @return success or failure | 217 | * @return success or failure |
218 | */ | 218 | */ |
219 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) | 219 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) |
220 | { | 220 | { |
221 | QString dummy; | 221 | QString dummy; |
222 | return selectedFont ( family, style, size, dummy ); | 222 | return selectedFont ( family, style, size, dummy ); |
223 | } | 223 | } |
224 | 224 | ||
225 | 225 | ||
226 | /** | 226 | /** |
227 | * This method does return the font family or QString::null if there is | 227 | * This method does return the font family or QString::null if there is |
228 | * no font item selected | 228 | * no font item selected |
229 | * @return the font family | 229 | * @return the font family |
230 | */ | 230 | */ |
231 | QString OFontSelector::fontFamily ( ) const | 231 | QString OFontSelector::fontFamily ( ) const |
232 | { | 232 | { |
diff --git a/libopie/orecurrancewidget.cpp b/libopie/orecurrancewidget.cpp index d81851e..33be269 100644 --- a/libopie/orecurrancewidget.cpp +++ b/libopie/orecurrancewidget.cpp | |||
@@ -457,176 +457,176 @@ void ORecurranceWidget::setupDaily() { | |||
457 | spinFreq->setValue( 1 ); | 457 | spinFreq->setValue( 1 ); |
458 | lblFreq->setText( tr("day(s)") ); | 458 | lblFreq->setText( tr("day(s)") ); |
459 | lblVar2->show(); | 459 | lblVar2->show(); |
460 | showRepeatStuff(); | 460 | showRepeatStuff(); |
461 | lblRepeat->setText( strDayTemplate ); | 461 | lblRepeat->setText( strDayTemplate ); |
462 | setupRepeatLabel( 1 ); | 462 | setupRepeatLabel( 1 ); |
463 | } | 463 | } |
464 | void ORecurranceWidget::setupWeekly() { | 464 | void ORecurranceWidget::setupWeekly() { |
465 | // reshow the buttons... | 465 | // reshow the buttons... |
466 | fraExtra->setTitle( tr("Repeat On") ); | 466 | fraExtra->setTitle( tr("Repeat On") ); |
467 | fraExtra->setExclusive( FALSE ); | 467 | fraExtra->setExclusive( FALSE ); |
468 | fraExtra->show(); | 468 | fraExtra->show(); |
469 | if ( startWeekOnMonday ) { | 469 | if ( startWeekOnMonday ) { |
470 | cmdExtra1->setText( tr("Mon") ); | 470 | cmdExtra1->setText( tr("Mon") ); |
471 | cmdExtra2->setText( tr("Tue") ); | 471 | cmdExtra2->setText( tr("Tue") ); |
472 | cmdExtra3->setText( tr("Wed") ); | 472 | cmdExtra3->setText( tr("Wed") ); |
473 | cmdExtra4->setText( tr("Thu") ); | 473 | cmdExtra4->setText( tr("Thu") ); |
474 | cmdExtra5->setText( tr("Fri") ); | 474 | cmdExtra5->setText( tr("Fri") ); |
475 | cmdExtra6->setText( tr("Sat") ); | 475 | cmdExtra6->setText( tr("Sat") ); |
476 | cmdExtra7->setText( tr("Sun") ); | 476 | cmdExtra7->setText( tr("Sun") ); |
477 | } else { | 477 | } else { |
478 | cmdExtra1->setText( tr("Sun") ); | 478 | cmdExtra1->setText( tr("Sun") ); |
479 | cmdExtra2->setText( tr("Mon") ); | 479 | cmdExtra2->setText( tr("Mon") ); |
480 | cmdExtra3->setText( tr("Tue") ); | 480 | cmdExtra3->setText( tr("Tue") ); |
481 | cmdExtra4->setText( tr("Wed") ); | 481 | cmdExtra4->setText( tr("Wed") ); |
482 | cmdExtra5->setText( tr("Thu") ); | 482 | cmdExtra5->setText( tr("Thu") ); |
483 | cmdExtra6->setText( tr("Fri") ); | 483 | cmdExtra6->setText( tr("Fri") ); |
484 | cmdExtra7->setText( tr("Sat") ); | 484 | cmdExtra7->setText( tr("Sat") ); |
485 | } | 485 | } |
486 | // I hope clustering these improve performance.... | 486 | // I hope clustering these improve performance.... |
487 | cmdExtra1->setOn( FALSE ); | 487 | cmdExtra1->setOn( FALSE ); |
488 | cmdExtra2->setOn( FALSE ); | 488 | cmdExtra2->setOn( FALSE ); |
489 | cmdExtra3->setOn( FALSE ); | 489 | cmdExtra3->setOn( FALSE ); |
490 | cmdExtra4->setOn( FALSE ); | 490 | cmdExtra4->setOn( FALSE ); |
491 | cmdExtra5->setOn( FALSE ); | 491 | cmdExtra5->setOn( FALSE ); |
492 | cmdExtra6->setOn( FALSE ); | 492 | cmdExtra6->setOn( FALSE ); |
493 | cmdExtra7->setOn( FALSE ); | 493 | cmdExtra7->setOn( FALSE ); |
494 | 494 | ||
495 | cmdExtra1->show(); | 495 | cmdExtra1->show(); |
496 | cmdExtra2->show(); | 496 | cmdExtra2->show(); |
497 | cmdExtra3->show(); | 497 | cmdExtra3->show(); |
498 | cmdExtra4->show(); | 498 | cmdExtra4->show(); |
499 | cmdExtra5->show(); | 499 | cmdExtra5->show(); |
500 | cmdExtra6->show(); | 500 | cmdExtra6->show(); |
501 | cmdExtra7->show(); | 501 | cmdExtra7->show(); |
502 | 502 | ||
503 | lblWeekVar->show(); | 503 | lblWeekVar->show(); |
504 | spinFreq->setValue( 1 ); | 504 | spinFreq->setValue( 1 ); |
505 | // might as well set the day too... | 505 | // might as well set the day too... |
506 | if ( startWeekOnMonday ) { | 506 | if ( startWeekOnMonday ) { |
507 | fraExtra->setButton( start.dayOfWeek() - 1 ); | 507 | fraExtra->setButton( start.dayOfWeek() - 1 ); |
508 | } else { | 508 | } else { |
509 | fraExtra->setButton( start.dayOfWeek() % 7 ); | 509 | fraExtra->setButton( start.dayOfWeek() % 7 ); |
510 | } | 510 | } |
511 | lblFreq->setText( tr("week(s)") ); | 511 | lblFreq->setText( tr("week(s)") ); |
512 | lblVar2->show(); | 512 | lblVar2->show(); |
513 | showRepeatStuff(); | 513 | showRepeatStuff(); |
514 | setupRepeatLabel( 1 ); | 514 | setupRepeatLabel( 1 ); |
515 | } | 515 | } |
516 | void ORecurranceWidget::setupMonthly() { | 516 | void ORecurranceWidget::setupMonthly() { |
517 | hideExtras(); | 517 | hideExtras(); |
518 | lblWeekVar->hide(); | 518 | lblWeekVar->hide(); |
519 | fraExtra->setTitle( tr("Repeat By") ); | 519 | fraExtra->setTitle( tr("Repeat By") ); |
520 | fraExtra->setExclusive( TRUE ); | 520 | fraExtra->setExclusive( TRUE ); |
521 | fraExtra->show(); | 521 | fraExtra->show(); |
522 | cmdExtra1->setText( tr("Day") ); | 522 | cmdExtra1->setText( tr("Day") ); |
523 | cmdExtra1->show(); | 523 | cmdExtra1->show(); |
524 | cmdExtra2->setText( tr("Date") ); | 524 | cmdExtra2->setText( tr("Date") ); |
525 | cmdExtra2->show(); | 525 | cmdExtra2->show(); |
526 | spinFreq->setValue( 1 ); | 526 | spinFreq->setValue( 1 ); |
527 | lblFreq->setText( tr("month(s)") ); | 527 | lblFreq->setText( tr("month(s)") ); |
528 | lblVar2->show(); | 528 | lblVar2->show(); |
529 | showRepeatStuff(); | 529 | showRepeatStuff(); |
530 | setupRepeatLabel( 1 ); | 530 | setupRepeatLabel( 1 ); |
531 | } | 531 | } |
532 | void ORecurranceWidget::setupYearly() { | 532 | void ORecurranceWidget::setupYearly() { |
533 | hideExtras(); | 533 | hideExtras(); |
534 | lblWeekVar->hide(); | 534 | lblWeekVar->hide(); |
535 | spinFreq->setValue( 1 ); | 535 | spinFreq->setValue( 1 ); |
536 | lblFreq->setText( tr("year(s)") ); | 536 | lblFreq->setText( tr("year(s)") ); |
537 | lblFreq->show(); | 537 | lblFreq->show(); |
538 | lblFreq->show(); | 538 | lblFreq->show(); |
539 | showRepeatStuff(); | 539 | showRepeatStuff(); |
540 | lblVar2->show(); | 540 | lblVar2->show(); |
541 | QString strEvery = strYearTemplate.arg( start.monthName(start.month()) ).arg( numberPlacing(start.day()) ); | 541 | QString strEvery = strYearTemplate.arg( start.monthName(start.month()) ).arg( numberPlacing(start.day()) ); |
542 | lblRepeat->setText( strEvery ); | 542 | lblRepeat->setText( strEvery ); |
543 | setupRepeatLabel( 1 ); | 543 | setupRepeatLabel( 1 ); |
544 | 544 | ||
545 | } | 545 | } |
546 | void ORecurranceWidget::init() { | 546 | void ORecurranceWidget::init() { |
547 | QPopupMenu *m1 = new QPopupMenu( this ); | 547 | QPopupMenu *m1 = new QPopupMenu( this ); |
548 | repeatPicker = new DateBookMonth( m1, 0, TRUE ); | 548 | repeatPicker = new DateBookMonth( m1, 0, TRUE ); |
549 | m1->insertItem( repeatPicker ); | 549 | m1->insertItem( repeatPicker ); |
550 | cmdEnd->setPopup( m1 ); | 550 | cmdEnd->setPopup( m1 ); |
551 | cmdEnd->setPopupDelay( 0 ); | 551 | cmdEnd->setPopupDelay( 0 ); |
552 | 552 | ||
553 | QObject::connect( repeatPicker, SIGNAL(dateClicked(int, int, int)), | 553 | QObject::connect( repeatPicker, SIGNAL(dateClicked(int,int,int)), |
554 | this, SLOT(endDateChanged(int, int, int)) ); | 554 | this, SLOT(endDateChanged(int,int,int)) ); |
555 | QObject::connect( qApp, SIGNAL(weekChanged(bool)), | 555 | QObject::connect( qApp, SIGNAL(weekChanged(bool)), |
556 | this, SLOT(slotChangeStartOfWeek(bool)) ); | 556 | this, SLOT(slotChangeStartOfWeek(bool)) ); |
557 | 557 | ||
558 | listRTypeButtons.setAutoDelete( TRUE ); | 558 | listRTypeButtons.setAutoDelete( TRUE ); |
559 | listRTypeButtons.append( cmdNone ); | 559 | listRTypeButtons.append( cmdNone ); |
560 | listRTypeButtons.append( cmdDay ); | 560 | listRTypeButtons.append( cmdDay ); |
561 | listRTypeButtons.append( cmdWeek ); | 561 | listRTypeButtons.append( cmdWeek ); |
562 | listRTypeButtons.append( cmdMonth ); | 562 | listRTypeButtons.append( cmdMonth ); |
563 | listRTypeButtons.append( cmdYear ); | 563 | listRTypeButtons.append( cmdYear ); |
564 | 564 | ||
565 | listExtra.setAutoDelete( TRUE ); | 565 | listExtra.setAutoDelete( TRUE ); |
566 | listExtra.append( cmdExtra1 ); | 566 | listExtra.append( cmdExtra1 ); |
567 | listExtra.append( cmdExtra2 ); | 567 | listExtra.append( cmdExtra2 ); |
568 | listExtra.append( cmdExtra3 ); | 568 | listExtra.append( cmdExtra3 ); |
569 | listExtra.append( cmdExtra4 ); | 569 | listExtra.append( cmdExtra4 ); |
570 | listExtra.append( cmdExtra5 ); | 570 | listExtra.append( cmdExtra5 ); |
571 | listExtra.append( cmdExtra6 ); | 571 | listExtra.append( cmdExtra6 ); |
572 | listExtra.append( cmdExtra7 ); | 572 | listExtra.append( cmdExtra7 ); |
573 | } | 573 | } |
574 | void ORecurranceWidget::hideExtras() { | 574 | void ORecurranceWidget::hideExtras() { |
575 | // hide the extra buttons... | 575 | // hide the extra buttons... |
576 | fraExtra->hide(); | 576 | fraExtra->hide(); |
577 | chkNoEnd->hide(); | 577 | chkNoEnd->hide(); |
578 | QListIterator<QToolButton> it( listExtra ); | 578 | QListIterator<QToolButton> it( listExtra ); |
579 | for ( ; *it; ++it ) { | 579 | for ( ; *it; ++it ) { |
580 | (*it)->hide(); | 580 | (*it)->hide(); |
581 | (*it)->setOn( FALSE ); | 581 | (*it)->setOn( FALSE ); |
582 | } | 582 | } |
583 | } | 583 | } |
584 | void ORecurranceWidget::showRepeatStuff() { | 584 | void ORecurranceWidget::showRepeatStuff() { |
585 | cmdEnd->show(); | 585 | cmdEnd->show(); |
586 | chkNoEnd->show(); | 586 | chkNoEnd->show(); |
587 | lblFreq->show(); | 587 | lblFreq->show(); |
588 | lblEvery->show(); | 588 | lblEvery->show(); |
589 | lblFreq->show(); | 589 | lblFreq->show(); |
590 | spinFreq->show(); | 590 | spinFreq->show(); |
591 | lblEnd->show(); | 591 | lblEnd->show(); |
592 | lblRepeat->setText( tr("Every") ); | 592 | lblRepeat->setText( tr("Every") ); |
593 | } | 593 | } |
594 | 594 | ||
595 | 595 | ||
596 | static int week( const QDate &start ) | 596 | static int week( const QDate &start ) |
597 | { | 597 | { |
598 | // figure out the week... | 598 | // figure out the week... |
599 | int stop = start.day(), | 599 | int stop = start.day(), |
600 | sentinel = start.dayOfWeek(), | 600 | sentinel = start.dayOfWeek(), |
601 | dayOfWeek = QDate( start.year(), start.month(), 1 ).dayOfWeek(), | 601 | dayOfWeek = QDate( start.year(), start.month(), 1 ).dayOfWeek(), |
602 | week = 1, | 602 | week = 1, |
603 | i; | 603 | i; |
604 | for ( i = 1; i < stop; i++ ) { | 604 | for ( i = 1; i < stop; i++ ) { |
605 | if ( dayOfWeek++ == sentinel ) | 605 | if ( dayOfWeek++ == sentinel ) |
606 | week++; | 606 | week++; |
607 | if ( dayOfWeek > 7 ) | 607 | if ( dayOfWeek > 7 ) |
608 | dayOfWeek = 0; | 608 | dayOfWeek = 0; |
609 | } | 609 | } |
610 | return week; | 610 | return week; |
611 | } | 611 | } |
612 | 612 | ||
613 | static QString numberPlacing( int x ) | 613 | static QString numberPlacing( int x ) |
614 | { | 614 | { |
615 | // I hope this works in other languages besides english... | 615 | // I hope this works in other languages besides english... |
616 | QString str = QString::number( x ); | 616 | QString str = QString::number( x ); |
617 | switch ( x % 10 ) { | 617 | switch ( x % 10 ) { |
618 | case 1: | 618 | case 1: |
619 | str += QWidget::tr( "st" ); | 619 | str += QWidget::tr( "st" ); |
620 | break; | 620 | break; |
621 | case 2: | 621 | case 2: |
622 | str += QWidget::tr( "nd" ); | 622 | str += QWidget::tr( "nd" ); |
623 | break; | 623 | break; |
624 | case 3: | 624 | case 3: |
625 | str += QWidget::tr( "rd" ); | 625 | str += QWidget::tr( "rd" ); |
626 | break; | 626 | break; |
627 | default: | 627 | default: |
628 | str += QWidget::tr( "th" ); | 628 | str += QWidget::tr( "th" ); |
629 | break; | 629 | break; |
630 | } | 630 | } |
631 | return str; | 631 | return str; |
632 | } | 632 | } |
diff --git a/libopie/otabwidget.cpp b/libopie/otabwidget.cpp index 3a9a5ec..52190b2 100644 --- a/libopie/otabwidget.cpp +++ b/libopie/otabwidget.cpp | |||
@@ -1,173 +1,173 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> | 4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include "otabwidget.h" | 32 | #include "otabwidget.h" |
33 | 33 | ||
34 | #include <qpe/applnk.h> | 34 | #include <qpe/applnk.h> |
35 | #include <qpe/config.h> | 35 | #include <qpe/config.h> |
36 | #include <qpe/resource.h> | 36 | #include <qpe/resource.h> |
37 | #include <opie/otabbar.h> | 37 | #include <opie/otabbar.h> |
38 | 38 | ||
39 | #include <qcombobox.h> | 39 | #include <qcombobox.h> |
40 | #include <qwidgetstack.h> | 40 | #include <qwidgetstack.h> |
41 | 41 | ||
42 | OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPosition p ) | 42 | OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPosition p ) |
43 | : QWidget( parent, name ) | 43 | : QWidget( parent, name ) |
44 | { | 44 | { |
45 | if ( s == Global ) | 45 | if ( s == Global ) |
46 | { | 46 | { |
47 | Config config( "qpe" ); | 47 | Config config( "qpe" ); |
48 | config.setGroup( "Appearance" ); | 48 | config.setGroup( "Appearance" ); |
49 | s = ( TabStyle ) config.readNumEntry( "TabStyle", (int) IconTab ); | 49 | s = ( TabStyle ) config.readNumEntry( "TabStyle", (int) IconTab ); |
50 | if ( s <= Global || s > IconList) | 50 | if ( s <= Global || s > IconList) |
51 | { | 51 | { |
52 | s = IconTab; | 52 | s = IconTab; |
53 | } | 53 | } |
54 | QString pos = config.readEntry( "TabPosition", "Top"); | 54 | QString pos = config.readEntry( "TabPosition", "Top"); |
55 | if ( pos == "Bottom" ) | 55 | if ( pos == "Bottom" ) |
56 | { | 56 | { |
57 | p = Bottom; | 57 | p = Bottom; |
58 | } | 58 | } |
59 | else | 59 | else |
60 | { | 60 | { |
61 | p = Top; | 61 | p = Top; |
62 | } | 62 | } |
63 | } | 63 | } |
64 | 64 | ||
65 | widgetStack = new QWidgetStack( this, "widgetstack" ); | 65 | widgetStack = new QWidgetStack( this, "widgetstack" ); |
66 | widgetStack->setFrameStyle( QFrame::NoFrame ); | 66 | widgetStack->setFrameStyle( QFrame::NoFrame ); |
67 | widgetStack->setLineWidth( style().defaultFrameWidth() ); | 67 | widgetStack->setLineWidth( style().defaultFrameWidth() ); |
68 | 68 | ||
69 | tabBarStack = new QWidgetStack( this, "tabbarstack" ); | 69 | tabBarStack = new QWidgetStack( this, "tabbarstack" ); |
70 | 70 | ||
71 | tabBar = new OTabBar( tabBarStack, "tabbar" ); | 71 | tabBar = new OTabBar( tabBarStack, "tabbar" ); |
72 | tabBarStack->addWidget( tabBar, 0 ); | 72 | tabBarStack->addWidget( tabBar, 0 ); |
73 | connect( tabBar, SIGNAL( selected( int ) ), this, SLOT( slotTabBarSelected( int ) ) ); | 73 | connect( tabBar, SIGNAL( selected(int) ), this, SLOT( slotTabBarSelected(int) ) ); |
74 | 74 | ||
75 | tabList = new QComboBox( false, tabBarStack, "tablist" ); | 75 | tabList = new QComboBox( false, tabBarStack, "tablist" ); |
76 | tabBarStack->addWidget( tabList, 1 ); | 76 | tabBarStack->addWidget( tabList, 1 ); |
77 | connect( tabList, SIGNAL( activated( int ) ), this, SLOT( slotTabListSelected( int ) ) ); | 77 | connect( tabList, SIGNAL( activated(int) ), this, SLOT( slotTabListSelected(int) ) ); |
78 | 78 | ||
79 | tabBarPosition = p; | 79 | tabBarPosition = p; |
80 | setTabStyle( s ); | 80 | setTabStyle( s ); |
81 | setTabPosition( p ); | 81 | setTabPosition( p ); |
82 | 82 | ||
83 | currTab= 0x0; | 83 | currTab= 0x0; |
84 | } | 84 | } |
85 | 85 | ||
86 | OTabWidget::~OTabWidget() | 86 | OTabWidget::~OTabWidget() |
87 | { | 87 | { |
88 | } | 88 | } |
89 | 89 | ||
90 | void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &label ) | 90 | void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &label ) |
91 | { | 91 | { |
92 | QPixmap iconset = loadSmooth( icon ); | 92 | QPixmap iconset = loadSmooth( icon ); |
93 | 93 | ||
94 | QTab *tab = new QTab(); | 94 | QTab *tab = new QTab(); |
95 | if ( tabBarStyle == IconTab ) | 95 | if ( tabBarStyle == IconTab ) |
96 | { | 96 | { |
97 | tab->label = QString::null; | 97 | tab->label = QString::null; |
98 | } | 98 | } |
99 | else | 99 | else |
100 | { | 100 | { |
101 | tab->label = label; | 101 | tab->label = label; |
102 | } | 102 | } |
103 | if ( tabBarStyle == IconTab || tabBarStyle == IconList ) | 103 | if ( tabBarStyle == IconTab || tabBarStyle == IconList ) |
104 | { | 104 | { |
105 | tab->iconset = new QIconSet( iconset ); | 105 | tab->iconset = new QIconSet( iconset ); |
106 | } | 106 | } |
107 | int tabid = tabBar->addTab( tab ); | 107 | int tabid = tabBar->addTab( tab ); |
108 | 108 | ||
109 | if ( tabBarStyle == IconTab || tabBarStyle == IconList ) | 109 | if ( tabBarStyle == IconTab || tabBarStyle == IconList ) |
110 | { | 110 | { |
111 | tabList->insertItem( iconset, label, -1 ); | 111 | tabList->insertItem( iconset, label, -1 ); |
112 | } | 112 | } |
113 | else | 113 | else |
114 | { | 114 | { |
115 | tabList->insertItem( label ); | 115 | tabList->insertItem( label ); |
116 | } | 116 | } |
117 | 117 | ||
118 | widgetStack->addWidget( child, tabid ); | 118 | widgetStack->addWidget( child, tabid ); |
119 | widgetStack->raiseWidget( child ); | 119 | widgetStack->raiseWidget( child ); |
120 | widgetStack->setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); | 120 | widgetStack->setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); |
121 | 121 | ||
122 | OTabInfo *tabinfo = new OTabInfo( tabid, child, icon, label ); | 122 | OTabInfo *tabinfo = new OTabInfo( tabid, child, icon, label ); |
123 | tabs.append( tabinfo ); | 123 | tabs.append( tabinfo ); |
124 | selectTab( tabinfo ); | 124 | selectTab( tabinfo ); |
125 | } | 125 | } |
126 | 126 | ||
127 | void OTabWidget::removePage( QWidget *childwidget ) | 127 | void OTabWidget::removePage( QWidget *childwidget ) |
128 | { | 128 | { |
129 | if ( childwidget ) | 129 | if ( childwidget ) |
130 | { | 130 | { |
131 | OTabInfo *tab = tabs.first(); | 131 | OTabInfo *tab = tabs.first(); |
132 | while ( tab && tab->control() != childwidget ) | 132 | while ( tab && tab->control() != childwidget ) |
133 | { | 133 | { |
134 | tab = tabs.next(); | 134 | tab = tabs.next(); |
135 | } | 135 | } |
136 | if ( tab && tab->control() == childwidget ) | 136 | if ( tab && tab->control() == childwidget ) |
137 | { | 137 | { |
138 | tabBar->setTabEnabled( tab->id(), FALSE ); | 138 | tabBar->setTabEnabled( tab->id(), FALSE ); |
139 | tabBar->removeTab( tabBar->tab( tab->id() ) ); | 139 | tabBar->removeTab( tabBar->tab( tab->id() ) ); |
140 | int i = 0; | 140 | int i = 0; |
141 | while ( i < tabList->count() && tabList->text( i ) != tab->label() ) | 141 | while ( i < tabList->count() && tabList->text( i ) != tab->label() ) |
142 | { | 142 | { |
143 | i++; | 143 | i++; |
144 | } | 144 | } |
145 | if ( tabList->text( i ) == tab->label() ) | 145 | if ( tabList->text( i ) == tab->label() ) |
146 | { | 146 | { |
147 | tabList->removeItem( i ); | 147 | tabList->removeItem( i ); |
148 | } | 148 | } |
149 | widgetStack->removeWidget( childwidget ); | 149 | widgetStack->removeWidget( childwidget ); |
150 | tabs.remove( tab ); | 150 | tabs.remove( tab ); |
151 | delete tab; | 151 | delete tab; |
152 | currTab = tabs.current(); | 152 | currTab = tabs.current(); |
153 | if ( !currTab ) | 153 | if ( !currTab ) |
154 | { | 154 | { |
155 | widgetStack->setFrameStyle( QFrame::NoFrame ); | 155 | widgetStack->setFrameStyle( QFrame::NoFrame ); |
156 | } | 156 | } |
157 | 157 | ||
158 | setUpLayout(); | 158 | setUpLayout(); |
159 | } | 159 | } |
160 | } | 160 | } |
161 | } | 161 | } |
162 | 162 | ||
163 | void OTabWidget::changeTab( QWidget *widget, const QString &iconset, const QString &label) | 163 | void OTabWidget::changeTab( QWidget *widget, const QString &iconset, const QString &label) |
164 | { | 164 | { |
165 | OTabInfo *currtab = tabs.first(); | 165 | OTabInfo *currtab = tabs.first(); |
166 | while ( currtab && currtab->control() != widget ) | 166 | while ( currtab && currtab->control() != widget ) |
167 | { | 167 | { |
168 | currtab = tabs.next(); | 168 | currtab = tabs.next(); |
169 | } | 169 | } |
170 | if ( currtab && currtab->control() == widget ) | 170 | if ( currtab && currtab->control() == widget ) |
171 | { | 171 | { |
172 | QTab *tab = tabBar->tab( currtab->id() ); | 172 | QTab *tab = tabBar->tab( currtab->id() ); |
173 | QPixmap icon( loadSmooth( iconset ) ); | 173 | QPixmap icon( loadSmooth( iconset ) ); |
diff --git a/libopie/otimepicker.cpp b/libopie/otimepicker.cpp index 1eca7c5..11b80ed 100644 --- a/libopie/otimepicker.cpp +++ b/libopie/otimepicker.cpp | |||
@@ -80,163 +80,163 @@ void OTimePicker::slotHour(bool b) { | |||
80 | for (it=hourLst.begin(); it!=hourLst.end(); it++) { | 80 | for (it=hourLst.begin(); it!=hourLst.end(); it++) { |
81 | if (*it != r) (*it)->setOn(false); | 81 | if (*it != r) (*it)->setOn(false); |
82 | else tm.setHMS((*it)->text().toInt(), tm.minute(), 0); | 82 | else tm.setHMS((*it)->text().toInt(), tm.minute(), 0); |
83 | } | 83 | } |
84 | emit timeChanged(tm); | 84 | emit timeChanged(tm); |
85 | } else { | 85 | } else { |
86 | r->setOn(true); | 86 | r->setOn(true); |
87 | } | 87 | } |
88 | 88 | ||
89 | } | 89 | } |
90 | 90 | ||
91 | void OTimePicker::slotMinute(bool b) { | 91 | void OTimePicker::slotMinute(bool b) { |
92 | 92 | ||
93 | OClickableLabel *r = (OClickableLabel *) sender(); | 93 | OClickableLabel *r = (OClickableLabel *) sender(); |
94 | 94 | ||
95 | if (b) { | 95 | if (b) { |
96 | QValueListIterator<OClickableLabel *> it; | 96 | QValueListIterator<OClickableLabel *> it; |
97 | for (it=minuteLst.begin(); it!=minuteLst.end(); it++) { | 97 | for (it=minuteLst.begin(); it!=minuteLst.end(); it++) { |
98 | if (*it != r) (*it)->setOn(false); | 98 | if (*it != r) (*it)->setOn(false); |
99 | else tm.setHMS(tm.hour(),(*it)->text().toInt(), 0); | 99 | else tm.setHMS(tm.hour(),(*it)->text().toInt(), 0); |
100 | } | 100 | } |
101 | emit timeChanged(tm); | 101 | emit timeChanged(tm); |
102 | } else { | 102 | } else { |
103 | r->setOn(true); | 103 | r->setOn(true); |
104 | } | 104 | } |
105 | 105 | ||
106 | } | 106 | } |
107 | 107 | ||
108 | /** | 108 | /** |
109 | * Method to set the time. No signal gets emitted during this method call | 109 | * Method to set the time. No signal gets emitted during this method call |
110 | * Minutes must be within 5 minutes step starting at 0 ( 0,5,10,15,20... ) | 110 | * Minutes must be within 5 minutes step starting at 0 ( 0,5,10,15,20... ) |
111 | * @param t The time to be set | 111 | * @param t The time to be set |
112 | */ | 112 | */ |
113 | void OTimePicker::setTime( const QTime& t) { | 113 | void OTimePicker::setTime( const QTime& t) { |
114 | setTime( t.hour(), t.minute() ); | 114 | setTime( t.hour(), t.minute() ); |
115 | } | 115 | } |
116 | 116 | ||
117 | /** | 117 | /** |
118 | * Method to set the time. No signal gets emitted during this method call | 118 | * Method to set the time. No signal gets emitted during this method call |
119 | * @param h The hour | 119 | * @param h The hour |
120 | * @param m The minute. Minutes need to set by 5 minute steps | 120 | * @param m The minute. Minutes need to set by 5 minute steps |
121 | */ | 121 | */ |
122 | void OTimePicker::setTime( int h, int m ) { | 122 | void OTimePicker::setTime( int h, int m ) { |
123 | setHour(h); | 123 | setHour(h); |
124 | setMinute(m); | 124 | setMinute(m); |
125 | } | 125 | } |
126 | 126 | ||
127 | /* | 127 | /* |
128 | * FIXME round minutes to the 5 minute arrangement -zecke | 128 | * FIXME round minutes to the 5 minute arrangement -zecke |
129 | */ | 129 | */ |
130 | /** | 130 | /** |
131 | * Method to set the minutes | 131 | * Method to set the minutes |
132 | * @param m minutes | 132 | * @param m minutes |
133 | */ | 133 | */ |
134 | void OTimePicker::setMinute(int m) { | 134 | void OTimePicker::setMinute(int m) { |
135 | 135 | ||
136 | QString minute; | 136 | QString minute; |
137 | minute.sprintf("%.2d",m); | 137 | minute.sprintf("%.2d",m); |
138 | 138 | ||
139 | QValueListIterator<OClickableLabel *> it; | 139 | QValueListIterator<OClickableLabel *> it; |
140 | for (it=minuteLst.begin(); it!=minuteLst.end(); it++) { | 140 | for (it=minuteLst.begin(); it!=minuteLst.end(); it++) { |
141 | if ((*it)->text() == minute) (*it)->setOn(true); | 141 | if ((*it)->text() == minute) (*it)->setOn(true); |
142 | else (*it)->setOn(false); | 142 | else (*it)->setOn(false); |
143 | } | 143 | } |
144 | 144 | ||
145 | tm.setHMS(tm.hour(),m,0); | 145 | tm.setHMS(tm.hour(),m,0); |
146 | } | 146 | } |
147 | 147 | ||
148 | /** | 148 | /** |
149 | * Method to set the hour | 149 | * Method to set the hour |
150 | */ | 150 | */ |
151 | void OTimePicker::setHour(int h) { | 151 | void OTimePicker::setHour(int h) { |
152 | 152 | ||
153 | QString hour; | 153 | QString hour; |
154 | hour.sprintf("%.2d",h); | 154 | hour.sprintf("%.2d",h); |
155 | 155 | ||
156 | QValueListIterator<OClickableLabel *> it; | 156 | QValueListIterator<OClickableLabel *> it; |
157 | for (it=hourLst.begin(); it!=hourLst.end(); it++) { | 157 | for (it=hourLst.begin(); it!=hourLst.end(); it++) { |
158 | if ((*it)->text() == hour) (*it)->setOn(true); | 158 | if ((*it)->text() == hour) (*it)->setOn(true); |
159 | else (*it)->setOn(false); | 159 | else (*it)->setOn(false); |
160 | } | 160 | } |
161 | tm.setHMS(h,tm.minute(),0); | 161 | tm.setHMS(h,tm.minute(),0); |
162 | } | 162 | } |
163 | 163 | ||
164 | 164 | ||
165 | /** | 165 | /** |
166 | * This is a modal Dialog. | 166 | * This is a modal Dialog. |
167 | * | 167 | * |
168 | * @param parent The parent widget | 168 | * @param parent The parent widget |
169 | * @param name The name of the object | 169 | * @param name The name of the object |
170 | * @param fl Possible window flags | 170 | * @param fl Possible window flags |
171 | */ | 171 | */ |
172 | OTimePickerDialog::OTimePickerDialog ( QWidget* parent, const char* name, WFlags fl ) | 172 | OTimePickerDialog::OTimePickerDialog ( QWidget* parent, const char* name, WFlags fl ) |
173 | : OTimePickerDialogBase (parent , name, true , fl) | 173 | : OTimePickerDialogBase (parent , name, true , fl) |
174 | { | 174 | { |
175 | 175 | ||
176 | connect ( m_timePicker, SIGNAL( timeChanged( const QTime& ) ), | 176 | connect ( m_timePicker, SIGNAL( timeChanged(const QTime&) ), |
177 | this, SLOT( setTime ( const QTime& ) ) ); | 177 | this, SLOT( setTime(const QTime&) ) ); |
178 | connect ( minuteField, SIGNAL( textChanged ( const QString& ) ), | 178 | connect ( minuteField, SIGNAL( textChanged(const QString&) ), |
179 | this, SLOT ( setMinute ( const QString& ) ) ); | 179 | this, SLOT ( setMinute(const QString&) ) ); |
180 | connect ( hourField, SIGNAL( textChanged ( const QString& ) ), | 180 | connect ( hourField, SIGNAL( textChanged(const QString&) ), |
181 | this, SLOT ( setHour ( const QString& ) ) ); | 181 | this, SLOT ( setHour(const QString&) ) ); |
182 | 182 | ||
183 | } | 183 | } |
184 | 184 | ||
185 | /** | 185 | /** |
186 | * @return the time | 186 | * @return the time |
187 | */ | 187 | */ |
188 | QTime OTimePickerDialog::time()const | 188 | QTime OTimePickerDialog::time()const |
189 | { | 189 | { |
190 | return m_time; | 190 | return m_time; |
191 | } | 191 | } |
192 | 192 | ||
193 | /** | 193 | /** |
194 | * Set the time to time | 194 | * Set the time to time |
195 | * @param time The time to be set | 195 | * @param time The time to be set |
196 | */ | 196 | */ |
197 | void OTimePickerDialog::setTime( const QTime& time ) | 197 | void OTimePickerDialog::setTime( const QTime& time ) |
198 | { | 198 | { |
199 | m_time = time; | 199 | m_time = time; |
200 | 200 | ||
201 | m_timePicker->setHour ( time.hour() ); | 201 | m_timePicker->setHour ( time.hour() ); |
202 | m_timePicker->setMinute( time.minute() ); | 202 | m_timePicker->setMinute( time.minute() ); |
203 | 203 | ||
204 | // Set Textfields | 204 | // Set Textfields |
205 | if ( time.hour() < 10 ) | 205 | if ( time.hour() < 10 ) |
206 | hourField->setText( "0" + QString::number( time.hour() ) ); | 206 | hourField->setText( "0" + QString::number( time.hour() ) ); |
207 | else | 207 | else |
208 | hourField->setText( QString::number( time.hour() ) ); | 208 | hourField->setText( QString::number( time.hour() ) ); |
209 | 209 | ||
210 | if ( time.minute() < 10 ) | 210 | if ( time.minute() < 10 ) |
211 | minuteField->setText( "0" + QString::number( time.minute() ) ); | 211 | minuteField->setText( "0" + QString::number( time.minute() ) ); |
212 | else | 212 | else |
213 | minuteField->setText( QString::number( time.minute() ) ); | 213 | minuteField->setText( QString::number( time.minute() ) ); |
214 | 214 | ||
215 | } | 215 | } |
216 | 216 | ||
217 | /** | 217 | /** |
218 | * This method takes the current minute and tries to set hour | 218 | * This method takes the current minute and tries to set hour |
219 | * to hour. This succeeds if the resulting date is valid | 219 | * to hour. This succeeds if the resulting date is valid |
220 | * @param hour The hour as a string | 220 | * @param hour The hour as a string |
221 | */ | 221 | */ |
222 | void OTimePickerDialog::setHour ( const QString& hour ) | 222 | void OTimePickerDialog::setHour ( const QString& hour ) |
223 | { | 223 | { |
224 | if ( QTime::isValid ( hour.toInt(), m_time.minute() , 00 ) ){ | 224 | if ( QTime::isValid ( hour.toInt(), m_time.minute() , 00 ) ){ |
225 | m_time.setHMS ( hour.toInt(), m_time.minute() , 00 ); | 225 | m_time.setHMS ( hour.toInt(), m_time.minute() , 00 ); |
226 | setTime ( m_time ); | 226 | setTime ( m_time ); |
227 | } | 227 | } |
228 | 228 | ||
229 | } | 229 | } |
230 | 230 | ||
231 | /** | 231 | /** |
232 | * Method to set a new minute. It tries to convert the string to int and | 232 | * Method to set a new minute. It tries to convert the string to int and |
233 | * if the resulting date is valid a new date is set. | 233 | * if the resulting date is valid a new date is set. |
234 | * @see setHour | 234 | * @see setHour |
235 | */ | 235 | */ |
236 | void OTimePickerDialog::setMinute ( const QString& minute ) | 236 | void OTimePickerDialog::setMinute ( const QString& minute ) |
237 | { | 237 | { |
238 | if ( QTime::isValid ( m_time.hour(), minute.toInt(), 00 ) ){ | 238 | if ( QTime::isValid ( m_time.hour(), minute.toInt(), 00 ) ){ |
239 | m_time.setHMS ( m_time.hour(), minute.toInt(), 00 ); | 239 | m_time.setHMS ( m_time.hour(), minute.toInt(), 00 ); |
240 | setTime ( m_time ); | 240 | setTime ( m_time ); |
241 | } | 241 | } |
242 | } | 242 | } |
diff --git a/libopie/pim/ocontactaccess.cpp b/libopie/pim/ocontactaccess.cpp index 2e3ec1f..bc359f7 100644 --- a/libopie/pim/ocontactaccess.cpp +++ b/libopie/pim/ocontactaccess.cpp | |||
@@ -1,168 +1,173 @@ | |||
1 | /* | 1 | /* |
2 | * Class to manage the Contacts. | 2 | * Class to manage the Contacts. |
3 | * | 3 | * |
4 | * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) | 4 | * Copyright (c) 2002 by Stefan Eilers (Eilers.Stefan@epost.de) |
5 | * | 5 | * |
6 | * ===================================================================== | 6 | * ===================================================================== |
7 | *This program is free software; you can redistribute it and/or | 7 | *This program is free software; you can redistribute it and/or |
8 | *modify it under the terms of the GNU Library General Public | 8 | *modify it under the terms of the GNU Library General Public |
9 | * License as published by the Free Software Foundation; either | 9 | * License as published by the Free Software Foundation; either |
10 | * version 2 of the License, or (at your option) any later version. | 10 | * version 2 of the License, or (at your option) any later version. |
11 | * ===================================================================== | 11 | * ===================================================================== |
12 | * Info: This class could just work with a change in the header-file | 12 | * Info: This class could just work with a change in the header-file |
13 | * of the Contact class ! Therefore our libopie only compiles | 13 | * of the Contact class ! Therefore our libopie only compiles |
14 | * with our version of libqpe | 14 | * with our version of libqpe |
15 | * ===================================================================== | 15 | * ===================================================================== |
16 | * ToDo: XML-Backend: Automatic reload if something was changed... | 16 | * ToDo: XML-Backend: Automatic reload if something was changed... |
17 | * | 17 | * |
18 | * | 18 | * |
19 | * ===================================================================== | 19 | * ===================================================================== |
20 | * Version: $Id$ | 20 | * Version: $Id$ |
21 | * ===================================================================== | 21 | * ===================================================================== |
22 | * History: | 22 | * History: |
23 | * $Log$ | 23 | * $Log$ |
24 | * Revision 1.9 2004/03/02 12:14:22 alwin | ||
25 | * run the optimize_connect script | ||
26 | * the whole cvs is tagged with "before_optimize_connect" if there are problems you | ||
27 | * can check the diff (but it had compiled and run here) | ||
28 | * | ||
24 | * Revision 1.8 2003/05/08 13:55:09 tille | 29 | * Revision 1.8 2003/05/08 13:55:09 tille |
25 | * search stuff | 30 | * search stuff |
26 | * and match, toRichText & toShortText in oevent | 31 | * and match, toRichText & toShortText in oevent |
27 | * | 32 | * |
28 | * Revision 1.7 2002/11/13 14:14:51 eilers | 33 | * Revision 1.7 2002/11/13 14:14:51 eilers |
29 | * Added sorted for Contacts.. | 34 | * Added sorted for Contacts.. |
30 | * | 35 | * |
31 | * Revision 1.6 2002/11/01 15:10:42 eilers | 36 | * Revision 1.6 2002/11/01 15:10:42 eilers |
32 | * Added regExp-search in database for all fields in a contact. | 37 | * Added regExp-search in database for all fields in a contact. |
33 | * | 38 | * |
34 | * Revision 1.5 2002/10/16 10:52:40 eilers | 39 | * Revision 1.5 2002/10/16 10:52:40 eilers |
35 | * Added some docu to the interface and now using the cache infrastucture by zecke.. :) | 40 | * Added some docu to the interface and now using the cache infrastucture by zecke.. :) |
36 | * | 41 | * |
37 | * Revision 1.4 2002/10/14 16:21:54 eilers | 42 | * Revision 1.4 2002/10/14 16:21:54 eilers |
38 | * Some minor interface updates | 43 | * Some minor interface updates |
39 | * | 44 | * |
40 | * Revision 1.3 2002/10/07 17:34:24 eilers | 45 | * Revision 1.3 2002/10/07 17:34:24 eilers |
41 | * added OBackendFactory for advanced backend access | 46 | * added OBackendFactory for advanced backend access |
42 | * | 47 | * |
43 | * Revision 1.2 2002/10/02 16:18:11 eilers | 48 | * Revision 1.2 2002/10/02 16:18:11 eilers |
44 | * debugged and seems to work almost perfectly .. | 49 | * debugged and seems to work almost perfectly .. |
45 | * | 50 | * |
46 | * Revision 1.1 2002/09/27 17:11:44 eilers | 51 | * Revision 1.1 2002/09/27 17:11:44 eilers |
47 | * Added API for accessing the Contact-Database ! It is compiling, but | 52 | * Added API for accessing the Contact-Database ! It is compiling, but |
48 | * please do not expect that anything is working ! | 53 | * please do not expect that anything is working ! |
49 | * I will debug that stuff in the next time .. | 54 | * I will debug that stuff in the next time .. |
50 | * Please read README_COMPILE for compiling ! | 55 | * Please read README_COMPILE for compiling ! |
51 | * | 56 | * |
52 | * | 57 | * |
53 | */ | 58 | */ |
54 | 59 | ||
55 | #include "ocontactaccess.h" | 60 | #include "ocontactaccess.h" |
56 | #include "obackendfactory.h" | 61 | #include "obackendfactory.h" |
57 | 62 | ||
58 | #include <qasciidict.h> | 63 | #include <qasciidict.h> |
59 | #include <qdatetime.h> | 64 | #include <qdatetime.h> |
60 | #include <qfile.h> | 65 | #include <qfile.h> |
61 | #include <qregexp.h> | 66 | #include <qregexp.h> |
62 | #include <qlist.h> | 67 | #include <qlist.h> |
63 | #include <qcopchannel_qws.h> | 68 | #include <qcopchannel_qws.h> |
64 | 69 | ||
65 | //#include <qpe/qcopenvelope_qws.h> | 70 | //#include <qpe/qcopenvelope_qws.h> |
66 | #include <qpe/global.h> | 71 | #include <qpe/global.h> |
67 | 72 | ||
68 | #include <errno.h> | 73 | #include <errno.h> |
69 | #include <fcntl.h> | 74 | #include <fcntl.h> |
70 | #include <unistd.h> | 75 | #include <unistd.h> |
71 | #include <stdlib.h> | 76 | #include <stdlib.h> |
72 | 77 | ||
73 | #include "ocontactaccessbackend_xml.h" | 78 | #include "ocontactaccessbackend_xml.h" |
74 | 79 | ||
75 | 80 | ||
76 | OContactAccess::OContactAccess ( const QString appname, const QString , | 81 | OContactAccess::OContactAccess ( const QString appname, const QString , |
77 | OContactAccessBackend* end, bool autosync ): | 82 | OContactAccessBackend* end, bool autosync ): |
78 | OPimAccessTemplate<OContact>( end ) | 83 | OPimAccessTemplate<OContact>( end ) |
79 | { | 84 | { |
80 | /* take care of the backend. If there is no one defined, we | 85 | /* take care of the backend. If there is no one defined, we |
81 | * will use the XML-Backend as default (until we have a cute SQL-Backend..). | 86 | * will use the XML-Backend as default (until we have a cute SQL-Backend..). |
82 | */ | 87 | */ |
83 | if( end == 0 ) { | 88 | if( end == 0 ) { |
84 | qWarning ("Using BackendFactory !"); | 89 | qWarning ("Using BackendFactory !"); |
85 | end = OBackendFactory<OContactAccessBackend>::Default( "contact", appname ); | 90 | end = OBackendFactory<OContactAccessBackend>::Default( "contact", appname ); |
86 | } | 91 | } |
87 | // Set backend locally and in template | 92 | // Set backend locally and in template |
88 | m_backEnd = end; | 93 | m_backEnd = end; |
89 | OPimAccessTemplate<OContact>::setBackEnd (end); | 94 | OPimAccessTemplate<OContact>::setBackEnd (end); |
90 | 95 | ||
91 | 96 | ||
92 | /* Connect signal of external db change to function */ | 97 | /* Connect signal of external db change to function */ |
93 | QCopChannel *dbchannel = new QCopChannel( "QPE/PIM", this ); | 98 | QCopChannel *dbchannel = new QCopChannel( "QPE/PIM", this ); |
94 | connect( dbchannel, SIGNAL(received(const QCString &, const QByteArray &)), | 99 | connect( dbchannel, SIGNAL(received(const QCString&,const QByteArray&)), |
95 | this, SLOT(copMessage( const QCString &, const QByteArray &)) ); | 100 | this, SLOT(copMessage(const QCString&,const QByteArray&)) ); |
96 | if ( autosync ){ | 101 | if ( autosync ){ |
97 | QCopChannel *syncchannel = new QCopChannel( "QPE/Sync", this ); | 102 | QCopChannel *syncchannel = new QCopChannel( "QPE/Sync", this ); |
98 | connect( syncchannel, SIGNAL(received(const QCString &, const QByteArray &)), | 103 | connect( syncchannel, SIGNAL(received(const QCString&,const QByteArray&)), |
99 | this, SLOT(copMessage( const QCString &, const QByteArray &)) ); | 104 | this, SLOT(copMessage(const QCString&,const QByteArray&)) ); |
100 | } | 105 | } |
101 | 106 | ||
102 | 107 | ||
103 | } | 108 | } |
104 | OContactAccess::~OContactAccess () | 109 | OContactAccess::~OContactAccess () |
105 | { | 110 | { |
106 | /* The user may forget to save the changed database, therefore try to | 111 | /* The user may forget to save the changed database, therefore try to |
107 | * do it for him.. | 112 | * do it for him.. |
108 | */ | 113 | */ |
109 | save(); | 114 | save(); |
110 | // delete m_backEnd; is done by template.. | 115 | // delete m_backEnd; is done by template.. |
111 | } | 116 | } |
112 | 117 | ||
113 | 118 | ||
114 | bool OContactAccess::save () | 119 | bool OContactAccess::save () |
115 | { | 120 | { |
116 | /* If the database was changed externally, we could not save the | 121 | /* If the database was changed externally, we could not save the |
117 | * Data. This will remove added items which is unacceptable ! | 122 | * Data. This will remove added items which is unacceptable ! |
118 | * Therefore: Reload database and merge the data... | 123 | * Therefore: Reload database and merge the data... |
119 | */ | 124 | */ |
120 | if ( OPimAccessTemplate<OContact>::wasChangedExternally() ) | 125 | if ( OPimAccessTemplate<OContact>::wasChangedExternally() ) |
121 | reload(); | 126 | reload(); |
122 | 127 | ||
123 | bool status = OPimAccessTemplate<OContact>::save(); | 128 | bool status = OPimAccessTemplate<OContact>::save(); |
124 | if ( !status ) return false; | 129 | if ( !status ) return false; |
125 | 130 | ||
126 | /* Now tell everyone that new data is available. | 131 | /* Now tell everyone that new data is available. |
127 | */ | 132 | */ |
128 | QCopEnvelope e( "QPE/PIM", "addressbookUpdated()" ); | 133 | QCopEnvelope e( "QPE/PIM", "addressbookUpdated()" ); |
129 | 134 | ||
130 | return true; | 135 | return true; |
131 | } | 136 | } |
132 | 137 | ||
133 | const uint OContactAccess::querySettings() | 138 | const uint OContactAccess::querySettings() |
134 | { | 139 | { |
135 | return ( m_backEnd->querySettings() ); | 140 | return ( m_backEnd->querySettings() ); |
136 | } | 141 | } |
137 | 142 | ||
138 | bool OContactAccess::hasQuerySettings ( int querySettings ) const | 143 | bool OContactAccess::hasQuerySettings ( int querySettings ) const |
139 | { | 144 | { |
140 | return ( m_backEnd->hasQuerySettings ( querySettings ) ); | 145 | return ( m_backEnd->hasQuerySettings ( querySettings ) ); |
141 | } | 146 | } |
142 | ORecordList<OContact> OContactAccess::sorted( bool ascending, int sortOrder, int sortFilter, int cat ) const | 147 | ORecordList<OContact> OContactAccess::sorted( bool ascending, int sortOrder, int sortFilter, int cat ) const |
143 | { | 148 | { |
144 | QArray<int> matchingContacts = m_backEnd -> sorted( ascending, sortOrder, sortFilter, cat ); | 149 | QArray<int> matchingContacts = m_backEnd -> sorted( ascending, sortOrder, sortFilter, cat ); |
145 | return ( ORecordList<OContact>(matchingContacts, this) ); | 150 | return ( ORecordList<OContact>(matchingContacts, this) ); |
146 | } | 151 | } |
147 | 152 | ||
148 | 153 | ||
149 | bool OContactAccess::wasChangedExternally()const | 154 | bool OContactAccess::wasChangedExternally()const |
150 | { | 155 | { |
151 | return ( m_backEnd->wasChangedExternally() ); | 156 | return ( m_backEnd->wasChangedExternally() ); |
152 | } | 157 | } |
153 | 158 | ||
154 | 159 | ||
155 | void OContactAccess::copMessage( const QCString &msg, const QByteArray & ) | 160 | void OContactAccess::copMessage( const QCString &msg, const QByteArray & ) |
156 | { | 161 | { |
157 | if ( msg == "addressbookUpdated()" ){ | 162 | if ( msg == "addressbookUpdated()" ){ |
158 | qWarning ("OContactAccess: Received addressbokUpdated()"); | 163 | qWarning ("OContactAccess: Received addressbokUpdated()"); |
159 | emit signalChanged ( this ); | 164 | emit signalChanged ( this ); |
160 | } else if ( msg == "flush()" ) { | 165 | } else if ( msg == "flush()" ) { |
161 | qWarning ("OContactAccess: Received flush()"); | 166 | qWarning ("OContactAccess: Received flush()"); |
162 | save (); | 167 | save (); |
163 | } else if ( msg == "reload()" ) { | 168 | } else if ( msg == "reload()" ) { |
164 | qWarning ("OContactAccess: Received reload()"); | 169 | qWarning ("OContactAccess: Received reload()"); |
165 | reload (); | 170 | reload (); |
166 | emit signalChanged ( this ); | 171 | emit signalChanged ( this ); |
167 | } | 172 | } |
168 | } | 173 | } |
diff --git a/libopie/pim/opimmainwindow.cpp b/libopie/pim/opimmainwindow.cpp index 2739e26..99a0333 100644 --- a/libopie/pim/opimmainwindow.cpp +++ b/libopie/pim/opimmainwindow.cpp | |||
@@ -1,120 +1,120 @@ | |||
1 | #include <qapplication.h> | 1 | #include <qapplication.h> |
2 | #include <qdatetime.h> | 2 | #include <qdatetime.h> |
3 | #include <qcopchannel_qws.h> | 3 | #include <qcopchannel_qws.h> |
4 | 4 | ||
5 | #include <qpe/sound.h> | 5 | #include <qpe/sound.h> |
6 | #include <qpe/qcopenvelope_qws.h> | 6 | #include <qpe/qcopenvelope_qws.h> |
7 | #include <qpe/qpeapplication.h> | 7 | #include <qpe/qpeapplication.h> |
8 | 8 | ||
9 | #include "opimresolver.h" | 9 | #include "opimresolver.h" |
10 | #include "opimmainwindow.h" | 10 | #include "opimmainwindow.h" |
11 | 11 | ||
12 | OPimMainWindow::OPimMainWindow( const QString& service, QWidget* parent, | 12 | OPimMainWindow::OPimMainWindow( const QString& service, QWidget* parent, |
13 | const char* name, WFlags flag ) | 13 | const char* name, WFlags flag ) |
14 | : QMainWindow( parent, name, flag ), m_rtti(-1), m_service( service ), m_fallBack(0l) { | 14 | : QMainWindow( parent, name, flag ), m_rtti(-1), m_service( service ), m_fallBack(0l) { |
15 | 15 | ||
16 | /* | 16 | /* |
17 | * let's generate our QCopChannel | 17 | * let's generate our QCopChannel |
18 | */ | 18 | */ |
19 | m_str = QString("QPE/"+m_service).local8Bit(); | 19 | m_str = QString("QPE/"+m_service).local8Bit(); |
20 | m_channel= new QCopChannel(m_str, this ); | 20 | m_channel= new QCopChannel(m_str, this ); |
21 | connect(m_channel, SIGNAL(received(const QCString&, const QByteArray& ) ), | 21 | connect(m_channel, SIGNAL(received(const QCString&,const QByteArray&) ), |
22 | this, SLOT( appMessage( const QCString&, const QByteArray& ) ) ); | 22 | this, SLOT( appMessage(const QCString&,const QByteArray&) ) ); |
23 | connect(qApp, SIGNAL(appMessage(const QCString&, const QByteArray& ) ), | 23 | connect(qApp, SIGNAL(appMessage(const QCString&,const QByteArray&) ), |
24 | this, SLOT( appMessage( const QCString&, const QByteArray& ) ) ); | 24 | this, SLOT( appMessage(const QCString&,const QByteArray&) ) ); |
25 | 25 | ||
26 | /* connect flush and reload */ | 26 | /* connect flush and reload */ |
27 | connect(qApp, SIGNAL(flush() ), | 27 | connect(qApp, SIGNAL(flush() ), |
28 | this, SLOT(flush() ) ); | 28 | this, SLOT(flush() ) ); |
29 | connect(qApp, SIGNAL(reload() ), | 29 | connect(qApp, SIGNAL(reload() ), |
30 | this, SLOT(reload() ) ); | 30 | this, SLOT(reload() ) ); |
31 | } | 31 | } |
32 | OPimMainWindow::~OPimMainWindow() { | 32 | OPimMainWindow::~OPimMainWindow() { |
33 | delete m_channel; | 33 | delete m_channel; |
34 | } | 34 | } |
35 | QCopChannel* OPimMainWindow::channel() { | 35 | QCopChannel* OPimMainWindow::channel() { |
36 | return m_channel; | 36 | return m_channel; |
37 | } | 37 | } |
38 | void OPimMainWindow::doSetDocument( const QString& ) { | 38 | void OPimMainWindow::doSetDocument( const QString& ) { |
39 | 39 | ||
40 | } | 40 | } |
41 | void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) { | 41 | void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) { |
42 | bool needShow = false; | 42 | bool needShow = false; |
43 | /* | 43 | /* |
44 | * create demands to create | 44 | * create demands to create |
45 | * a new record... | 45 | * a new record... |
46 | */ | 46 | */ |
47 | QDataStream stream(array, IO_ReadOnly); | 47 | QDataStream stream(array, IO_ReadOnly); |
48 | if ( cmd == "create()" ) { | 48 | if ( cmd == "create()" ) { |
49 | raise(); | 49 | raise(); |
50 | int uid = create(); | 50 | int uid = create(); |
51 | QCopEnvelope e(m_str, "created(int)" ); | 51 | QCopEnvelope e(m_str, "created(int)" ); |
52 | e << uid; | 52 | e << uid; |
53 | needShow = true; | 53 | needShow = true; |
54 | }else if ( cmd == "remove(int)" ) { | 54 | }else if ( cmd == "remove(int)" ) { |
55 | int uid; | 55 | int uid; |
56 | stream >> uid; | 56 | stream >> uid; |
57 | bool rem = remove( uid ); | 57 | bool rem = remove( uid ); |
58 | QCopEnvelope e(m_str, "removed(bool)" ); | 58 | QCopEnvelope e(m_str, "removed(bool)" ); |
59 | e << rem; | 59 | e << rem; |
60 | needShow = true; | 60 | needShow = true; |
61 | }else if ( cmd == "beam(int)" ) { | 61 | }else if ( cmd == "beam(int)" ) { |
62 | int uid; | 62 | int uid; |
63 | stream >> uid; | 63 | stream >> uid; |
64 | beam( uid); | 64 | beam( uid); |
65 | }else if ( cmd == "show(int)" ) { | 65 | }else if ( cmd == "show(int)" ) { |
66 | raise(); | 66 | raise(); |
67 | int uid; | 67 | int uid; |
68 | stream >> uid; | 68 | stream >> uid; |
69 | show( uid ); | 69 | show( uid ); |
70 | needShow = true; | 70 | needShow = true; |
71 | }else if ( cmd == "edit(int)" ) { | 71 | }else if ( cmd == "edit(int)" ) { |
72 | raise(); | 72 | raise(); |
73 | int uid; | 73 | int uid; |
74 | stream >> uid; | 74 | stream >> uid; |
75 | edit( uid ); | 75 | edit( uid ); |
76 | }else if ( cmd == "add(int,QByteArray)" ) { | 76 | }else if ( cmd == "add(int,QByteArray)" ) { |
77 | int rtti; | 77 | int rtti; |
78 | QByteArray array; | 78 | QByteArray array; |
79 | stream >> rtti; | 79 | stream >> rtti; |
80 | stream >> array; | 80 | stream >> array; |
81 | m_fallBack = record(rtti, array ); | 81 | m_fallBack = record(rtti, array ); |
82 | if (!m_fallBack) return; | 82 | if (!m_fallBack) return; |
83 | add( *m_fallBack ); | 83 | add( *m_fallBack ); |
84 | delete m_fallBack; | 84 | delete m_fallBack; |
85 | }else if ( cmd == "alarm(QDateTime,int)" ) { | 85 | }else if ( cmd == "alarm(QDateTime,int)" ) { |
86 | raise(); | 86 | raise(); |
87 | QDateTime dt; int uid; | 87 | QDateTime dt; int uid; |
88 | stream >> dt; | 88 | stream >> dt; |
89 | stream >> uid; | 89 | stream >> uid; |
90 | qWarning(" Date: %s Uid: %d", dt.toString().latin1(), uid ); | 90 | qWarning(" Date: %s Uid: %d", dt.toString().latin1(), uid ); |
91 | QDateTime current = QDateTime::currentDateTime(); | 91 | QDateTime current = QDateTime::currentDateTime(); |
92 | if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() ) | 92 | if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() ) |
93 | return; | 93 | return; |
94 | doAlarm( dt, uid ); | 94 | doAlarm( dt, uid ); |
95 | needShow = true; | 95 | needShow = true; |
96 | } | 96 | } |
97 | 97 | ||
98 | if (needShow ) | 98 | if (needShow ) |
99 | QPEApplication::setKeepRunning(); | 99 | QPEApplication::setKeepRunning(); |
100 | } | 100 | } |
101 | /* implement the url scripting here */ | 101 | /* implement the url scripting here */ |
102 | void OPimMainWindow::setDocument( const QString& str) { | 102 | void OPimMainWindow::setDocument( const QString& str) { |
103 | doSetDocument( str ); | 103 | doSetDocument( str ); |
104 | } | 104 | } |
105 | /* | 105 | /* |
106 | * we now try to get the array demarshalled | 106 | * we now try to get the array demarshalled |
107 | * check if the rtti matches this one | 107 | * check if the rtti matches this one |
108 | */ | 108 | */ |
109 | OPimRecord* OPimMainWindow::record( int rtti, const QByteArray& array ) { | 109 | OPimRecord* OPimMainWindow::record( int rtti, const QByteArray& array ) { |
110 | if ( service() != rtti ) | 110 | if ( service() != rtti ) |
111 | return 0l; | 111 | return 0l; |
112 | 112 | ||
113 | OPimRecord* record = OPimResolver::self()->record( rtti ); | 113 | OPimRecord* record = OPimResolver::self()->record( rtti ); |
114 | QDataStream str(array, IO_ReadOnly ); | 114 | QDataStream str(array, IO_ReadOnly ); |
115 | if ( !record || !record->loadFromStream(str) ) { | 115 | if ( !record || !record->loadFromStream(str) ) { |
116 | delete record; | 116 | delete record; |
117 | record = 0l; | 117 | record = 0l; |
118 | } | 118 | } |
119 | 119 | ||
120 | return record; | 120 | return record; |
diff --git a/libopie2/examples/opieui/osplitter_example/osplitter_mail.cpp b/libopie2/examples/opieui/osplitter_example/osplitter_mail.cpp index a75f9dc..789496c 100644 --- a/libopie2/examples/opieui/osplitter_example/osplitter_mail.cpp +++ b/libopie2/examples/opieui/osplitter_example/osplitter_mail.cpp | |||
@@ -1,79 +1,79 @@ | |||
1 | 1 | ||
2 | #include <qstring.h> | 2 | #include <qstring.h> |
3 | #include <qlabel.h> | 3 | #include <qlabel.h> |
4 | #include <qheader.h> | 4 | #include <qheader.h> |
5 | #include <qlayout.h> | 5 | #include <qlayout.h> |
6 | 6 | ||
7 | #include <qpe/qpeapplication.h> | 7 | #include <qpe/qpeapplication.h> |
8 | 8 | ||
9 | #include <opie2/oapplicationfactory.h> | 9 | #include <opie2/oapplicationfactory.h> |
10 | #include "osplitter_mail.h" | 10 | #include "osplitter_mail.h" |
11 | 11 | ||
12 | OPIE_EXPORT_APP( OApplicationFactory<ListViews> ) | 12 | OPIE_EXPORT_APP( OApplicationFactory<ListViews> ) |
13 | 13 | ||
14 | class Folder { | 14 | class Folder { |
15 | int dummy; | 15 | int dummy; |
16 | }; | 16 | }; |
17 | 17 | ||
18 | // ----------------------------------------------------------------- | 18 | // ----------------------------------------------------------------- |
19 | 19 | ||
20 | ListViews::ListViews( QWidget* p, const char* name, WFlags fl ) | 20 | ListViews::ListViews( QWidget* p, const char* name, WFlags fl ) |
21 | : QWidget( p, name, fl ) { | 21 | : QWidget( p, name, fl ) { |
22 | qApp->installEventFilter( this ); | 22 | qApp->installEventFilter( this ); |
23 | m_lstFolders.setAutoDelete( true ); | 23 | m_lstFolders.setAutoDelete( true ); |
24 | QHBoxLayout *lay = new QHBoxLayout(this); | 24 | QHBoxLayout *lay = new QHBoxLayout(this); |
25 | 25 | ||
26 | m_splitter = new OSplitter( Horizontal, this, "SPlitter 1" ); | 26 | m_splitter = new OSplitter( Horizontal, this, "SPlitter 1" ); |
27 | lay->addWidget( m_splitter ); | 27 | lay->addWidget( m_splitter ); |
28 | connect(m_splitter, SIGNAL(sizeChange(bool, const QSize& ) ), | 28 | connect(m_splitter, SIGNAL(sizeChange(bool,const QSize&) ), |
29 | this, SLOT(slotSizeChange(bool, const QSize& ) ) ); | 29 | this, SLOT(slotSizeChange(bool,const QSize&) ) ); |
30 | 30 | ||
31 | m_overview = new QListView( m_splitter ); | 31 | m_overview = new QListView( m_splitter ); |
32 | m_overview->header()->setClickEnabled( FALSE ); | 32 | m_overview->header()->setClickEnabled( FALSE ); |
33 | m_overview->addColumn( tr("Folder") ); | 33 | m_overview->addColumn( tr("Folder") ); |
34 | m_overview->setMaximumWidth( 200 ); | 34 | m_overview->setMaximumWidth( 200 ); |
35 | m_splitter->addWidget( m_overview, "zoom", tr("Folder Overview") ); | 35 | m_splitter->addWidget( m_overview, "zoom", tr("Folder Overview") ); |
36 | m_splitter->setSizeChange( 300 ); | 36 | m_splitter->setSizeChange( 300 ); |
37 | 37 | ||
38 | /* OSplitter starts with the small mode */ | 38 | /* OSplitter starts with the small mode */ |
39 | m_messages = 0; | 39 | m_messages = 0; |
40 | m_message = m_attach = 0; | 40 | m_message = m_attach = 0; |
41 | 41 | ||
42 | splitti = new OSplitter( Vertical, m_splitter, "Splitti2" ); | 42 | splitti = new OSplitter( Vertical, m_splitter, "Splitti2" ); |
43 | splitti->setSizeChange( 300 ); | 43 | splitti->setSizeChange( 300 ); |
44 | splitti->setSizePolicy( QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) ); | 44 | splitti->setSizePolicy( QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) ); |
45 | 45 | ||
46 | QLabel *lbl = new QLabel(splitti); | 46 | QLabel *lbl = new QLabel(splitti); |
47 | lbl->setTextFormat ( Qt::RichText ); | 47 | lbl->setTextFormat ( Qt::RichText ); |
48 | lbl->setText("<br><br><b>Test Test Test</b><br><br><p>Fooooo hjhh</p>"); | 48 | lbl->setText("<br><br><b>Test Test Test</b><br><br><p>Fooooo hjhh</p>"); |
49 | 49 | ||
50 | m_messages = new QListView( splitti ); | 50 | m_messages = new QListView( splitti ); |
51 | m_messages->addColumn(" Messages "); | 51 | m_messages->addColumn(" Messages "); |
52 | 52 | ||
53 | folder1 = new QListView( splitti ); | 53 | folder1 = new QListView( splitti ); |
54 | folder1->addColumn( "Messages 2 " ); | 54 | folder1->addColumn( "Messages 2 " ); |
55 | 55 | ||
56 | splitti->addWidget(m_messages, "mail", tr("Mails") ); | 56 | splitti->addWidget(m_messages, "mail", tr("Mails") ); |
57 | splitti->addWidget(folder1, "folder", tr("Folder") ); | 57 | splitti->addWidget(folder1, "folder", tr("Folder") ); |
58 | splitti->addWidget( lbl, "logo", tr("Label") ); | 58 | splitti->addWidget( lbl, "logo", tr("Label") ); |
59 | m_message = lbl; | 59 | m_message = lbl; |
60 | 60 | ||
61 | m_splitter->addWidget( splitti ); | 61 | m_splitter->addWidget( splitti ); |
62 | 62 | ||
63 | } | 63 | } |
64 | 64 | ||
65 | 65 | ||
66 | ListViews::~ListViews() { | 66 | ListViews::~ListViews() { |
67 | 67 | ||
68 | } | 68 | } |
69 | 69 | ||
70 | 70 | ||
71 | bool ListViews::eventFilter( QObject* obj, QEvent* ev ) { | 71 | bool ListViews::eventFilter( QObject* obj, QEvent* ev ) { |
72 | if (!obj->isWidgetType() ) | 72 | if (!obj->isWidgetType() ) |
73 | return false; | 73 | return false; |
74 | if ( ev->type() == QEvent::MouseButtonRelease ) { | 74 | if ( ev->type() == QEvent::MouseButtonRelease ) { |
75 | qWarning(" name %s, class %s", obj->name(), obj->className() ); | 75 | qWarning(" name %s, class %s", obj->name(), obj->className() ); |
76 | } | 76 | } |
77 | 77 | ||
78 | return false; | 78 | return false; |
79 | } | 79 | } |
diff --git a/libopie2/examples/opieui/oversatileviewdemo/opieuidemo.cpp b/libopie2/examples/opieui/oversatileviewdemo/opieuidemo.cpp index f62729c..0d8bc9f 100644 --- a/libopie2/examples/opieui/oversatileviewdemo/opieuidemo.cpp +++ b/libopie2/examples/opieui/oversatileviewdemo/opieuidemo.cpp | |||
@@ -17,189 +17,189 @@ | |||
17 | 17 | ||
18 | #include <qcolor.h> | 18 | #include <qcolor.h> |
19 | #include <qpopupmenu.h> | 19 | #include <qpopupmenu.h> |
20 | #include <qmenubar.h> | 20 | #include <qmenubar.h> |
21 | #include <qmessagebox.h> | 21 | #include <qmessagebox.h> |
22 | #include <qvbox.h> | 22 | #include <qvbox.h> |
23 | #include <qstring.h> | 23 | #include <qstring.h> |
24 | #include <qstringlist.h> | 24 | #include <qstringlist.h> |
25 | 25 | ||
26 | // Qtopia | 26 | // Qtopia |
27 | 27 | ||
28 | #ifdef QWS | 28 | #ifdef QWS |
29 | #include <qpe/qpeapplication.h> | 29 | #include <qpe/qpeapplication.h> |
30 | #include <qpe/global.h> | 30 | #include <qpe/global.h> |
31 | #endif | 31 | #endif |
32 | 32 | ||
33 | // Opie | 33 | // Opie |
34 | 34 | ||
35 | #ifdef QWS | 35 | #ifdef QWS |
36 | #include <opie2/odevice.h> | 36 | #include <opie2/odevice.h> |
37 | using namespace Opie; | 37 | using namespace Opie; |
38 | #endif | 38 | #endif |
39 | 39 | ||
40 | #include <opie2/ocompletionbox.h> | 40 | #include <opie2/ocompletionbox.h> |
41 | #include <opie2/olineedit.h> | 41 | #include <opie2/olineedit.h> |
42 | #include <opie2/ocombobox.h> | 42 | #include <opie2/ocombobox.h> |
43 | #include <opie2/oeditlistbox.h> | 43 | #include <opie2/oeditlistbox.h> |
44 | #include <opie2/oselector.h> | 44 | #include <opie2/oselector.h> |
45 | #include <opie2/opopupmenu.h> | 45 | #include <opie2/opopupmenu.h> |
46 | 46 | ||
47 | #include <qtabwidget.h> | 47 | #include <qtabwidget.h> |
48 | #include "oversatileviewdemo.h" | 48 | #include "oversatileviewdemo.h" |
49 | 49 | ||
50 | // Local | 50 | // Local |
51 | 51 | ||
52 | #include "opieuidemo.h" | 52 | #include "opieuidemo.h" |
53 | 53 | ||
54 | enum Demos { ocompletionbox, olineedit, ocombobox, oeditlistbox, oselector }; | 54 | enum Demos { ocompletionbox, olineedit, ocombobox, oeditlistbox, oselector }; |
55 | 55 | ||
56 | OpieUIDemo::OpieUIDemo( QWidget* parent, const char* name, WFlags fl ) | 56 | OpieUIDemo::OpieUIDemo( QWidget* parent, const char* name, WFlags fl ) |
57 | : QMainWindow( parent, name, fl ) | 57 | : QMainWindow( parent, name, fl ) |
58 | { | 58 | { |
59 | 59 | ||
60 | QMenuBar* mbar = this->menuBar(); | 60 | QMenuBar* mbar = this->menuBar(); |
61 | OPopupMenu* demo = new OPopupMenu( this ); | 61 | OPopupMenu* demo = new OPopupMenu( this ); |
62 | demo->setTitle( "Title" ); | 62 | demo->setTitle( "Title" ); |
63 | demo->setItemParameter( demo->insertItem( "OCompletionBox", this, SLOT( demo(int) ) ), ocompletionbox ); | 63 | demo->setItemParameter( demo->insertItem( "OCompletionBox", this, SLOT( demo(int) ) ), ocompletionbox ); |
64 | demo->setItemParameter( demo->insertItem( "OLineEdit", this, SLOT( demo(int) ) ), olineedit ); | 64 | demo->setItemParameter( demo->insertItem( "OLineEdit", this, SLOT( demo(int) ) ), olineedit ); |
65 | demo->setItemParameter( demo->insertItem( "OComboBox", this, SLOT( demo(int) ) ), ocombobox ); | 65 | demo->setItemParameter( demo->insertItem( "OComboBox", this, SLOT( demo(int) ) ), ocombobox ); |
66 | demo->setItemParameter( demo->insertItem( "OEditListBox", this, SLOT( demo(int) ) ), oeditlistbox ); | 66 | demo->setItemParameter( demo->insertItem( "OEditListBox", this, SLOT( demo(int) ) ), oeditlistbox ); |
67 | demo->setItemParameter( demo->insertItem( "OSelector", this, SLOT( demo(int) ) ), oselector ); | 67 | demo->setItemParameter( demo->insertItem( "OSelector", this, SLOT( demo(int) ) ), oselector ); |
68 | mbar->insertItem( "Demonstrate", demo ); | 68 | mbar->insertItem( "Demonstrate", demo ); |
69 | 69 | ||
70 | build(); | 70 | build(); |
71 | 71 | ||
72 | } | 72 | } |
73 | 73 | ||
74 | OpieUIDemo::~OpieUIDemo() | 74 | OpieUIDemo::~OpieUIDemo() |
75 | { | 75 | { |
76 | } | 76 | } |
77 | 77 | ||
78 | void OpieUIDemo::build() | 78 | void OpieUIDemo::build() |
79 | { | 79 | { |
80 | main = new QTabWidget( this, "tabwidget" ); | 80 | main = new QTabWidget( this, "tabwidget" ); |
81 | setCentralWidget( main ); | 81 | setCentralWidget( main ); |
82 | main->show(); | 82 | main->show(); |
83 | 83 | ||
84 | main->addTab( new OVersatileViewDemo( main ), "VersatileView" ); | 84 | main->addTab( new OVersatileViewDemo( main ), "VersatileView" ); |
85 | } | 85 | } |
86 | 86 | ||
87 | 87 | ||
88 | void OpieUIDemo::demo( int d ) | 88 | void OpieUIDemo::demo( int d ) |
89 | { | 89 | { |
90 | switch (d) | 90 | switch (d) |
91 | { | 91 | { |
92 | case ocompletionbox: demoOCompletionBox(); break; | 92 | case ocompletionbox: demoOCompletionBox(); break; |
93 | case olineedit: demoOLineEdit(); break; | 93 | case olineedit: demoOLineEdit(); break; |
94 | case ocombobox: demoOComboBox(); break; | 94 | case ocombobox: demoOComboBox(); break; |
95 | case oeditlistbox: demoOEditListBox(); break; | 95 | case oeditlistbox: demoOEditListBox(); break; |
96 | case oselector: demoOSelector(); break; | 96 | case oselector: demoOSelector(); break; |
97 | 97 | ||
98 | } | 98 | } |
99 | 99 | ||
100 | } | 100 | } |
101 | 101 | ||
102 | void OpieUIDemo::demoOCompletionBox() | 102 | void OpieUIDemo::demoOCompletionBox() |
103 | { | 103 | { |
104 | qDebug( "ocompletionbox" ); | 104 | qDebug( "ocompletionbox" ); |
105 | 105 | ||
106 | OCompletionBox* box = new OCompletionBox( 0 ); | 106 | OCompletionBox* box = new OCompletionBox( 0 ); |
107 | box->insertItem( "This CompletionBox" ); | 107 | box->insertItem( "This CompletionBox" ); |
108 | box->insertItem( "Says 'Hello World'" ); | 108 | box->insertItem( "Says 'Hello World'" ); |
109 | box->insertItem( "Here are some" ); | 109 | box->insertItem( "Here are some" ); |
110 | box->insertItem( "Additional Items" ); | 110 | box->insertItem( "Additional Items" ); |
111 | box->insertItem( "Complete Completion Box" ); | 111 | box->insertItem( "Complete Completion Box" ); |
112 | 112 | ||
113 | connect( box, SIGNAL( activated( const QString& ) ), this, SLOT( messageBox( const QString& ) ) ); | 113 | connect( box, SIGNAL( activated(const QString&) ), this, SLOT( messageBox(const QString&) ) ); |
114 | box->popup(); | 114 | box->popup(); |
115 | 115 | ||
116 | } | 116 | } |
117 | 117 | ||
118 | void OpieUIDemo::demoOLineEdit() | 118 | void OpieUIDemo::demoOLineEdit() |
119 | { | 119 | { |
120 | qDebug( "olineedit" ); | 120 | qDebug( "olineedit" ); |
121 | 121 | ||
122 | OLineEdit *edit = new OLineEdit( 0, "lineedit" ); | 122 | OLineEdit *edit = new OLineEdit( 0, "lineedit" ); |
123 | 123 | ||
124 | edit->setCompletionMode( OGlobalSettings::CompletionPopup ); | 124 | edit->setCompletionMode( OGlobalSettings::CompletionPopup ); |
125 | OCompletion* comp = edit->completionObject(); | 125 | OCompletion* comp = edit->completionObject(); |
126 | 126 | ||
127 | QStringList list; | 127 | QStringList list; |
128 | list << "mickeyl@handhelds.org"; | 128 | list << "mickeyl@handhelds.org"; |
129 | list << "mickey@tm.informatik.uni-frankfurt.de"; | 129 | list << "mickey@tm.informatik.uni-frankfurt.de"; |
130 | list << "mickey@vanille.de"; | 130 | list << "mickey@vanille.de"; |
131 | 131 | ||
132 | comp->setItems( list ); | 132 | comp->setItems( list ); |
133 | 133 | ||
134 | edit->show(); | 134 | edit->show(); |
135 | 135 | ||
136 | } | 136 | } |
137 | 137 | ||
138 | void OpieUIDemo::demoOComboBox() | 138 | void OpieUIDemo::demoOComboBox() |
139 | { | 139 | { |
140 | qDebug( "ocombobox" ); | 140 | qDebug( "ocombobox" ); |
141 | 141 | ||
142 | OComboBox *combo = new OComboBox( true, 0, "combobox" ); | 142 | OComboBox *combo = new OComboBox( true, 0, "combobox" ); |
143 | 143 | ||
144 | combo->setCompletionMode( OGlobalSettings::CompletionPopup ); | 144 | combo->setCompletionMode( OGlobalSettings::CompletionPopup ); |
145 | OCompletion* comp = combo->completionObject(); | 145 | OCompletion* comp = combo->completionObject(); |
146 | 146 | ||
147 | QStringList ilist; | 147 | QStringList ilist; |
148 | ilist << "kergoth@handhelds.org"; | 148 | ilist << "kergoth@handhelds.org"; |
149 | ilist << "harlekin@handhelds.org"; | 149 | ilist << "harlekin@handhelds.org"; |
150 | ilist << "groucho@handhelds.org"; | 150 | ilist << "groucho@handhelds.org"; |
151 | combo->insertStringList( ilist ); | 151 | combo->insertStringList( ilist ); |
152 | 152 | ||
153 | QStringList clist; | 153 | QStringList clist; |
154 | clist << "mickeyl@handhelds.org"; | 154 | clist << "mickeyl@handhelds.org"; |
155 | clist << "mickey@tm.informatik.uni-frankfurt.de"; | 155 | clist << "mickey@tm.informatik.uni-frankfurt.de"; |
156 | clist << "mickey@vanille.de"; | 156 | clist << "mickey@vanille.de"; |
157 | comp->setItems( clist ); | 157 | comp->setItems( clist ); |
158 | 158 | ||
159 | combo->show(); | 159 | combo->show(); |
160 | 160 | ||
161 | } | 161 | } |
162 | 162 | ||
163 | void OpieUIDemo::demoOEditListBox() | 163 | void OpieUIDemo::demoOEditListBox() |
164 | { | 164 | { |
165 | qDebug( "oeditlistbox" ); | 165 | qDebug( "oeditlistbox" ); |
166 | 166 | ||
167 | OEditListBox* edit = new OEditListBox( "OEditListBox", 0, "editlistbox" ); | 167 | OEditListBox* edit = new OEditListBox( "OEditListBox", 0, "editlistbox" ); |
168 | 168 | ||
169 | edit->lineEdit()->setCompletionMode( OGlobalSettings::CompletionPopup ); | 169 | edit->lineEdit()->setCompletionMode( OGlobalSettings::CompletionPopup ); |
170 | OCompletion* comp = edit->lineEdit()->completionObject(); | 170 | OCompletion* comp = edit->lineEdit()->completionObject(); |
171 | QStringList clist; | 171 | QStringList clist; |
172 | clist << "Completion everywhere"; | 172 | clist << "Completion everywhere"; |
173 | clist << "Cool Completion everywhere"; | 173 | clist << "Cool Completion everywhere"; |
174 | clist << "History History History"; | 174 | clist << "History History History"; |
175 | comp->setItems( clist ); | 175 | comp->setItems( clist ); |
176 | 176 | ||
177 | QStringList list; | 177 | QStringList list; |
178 | list << "kergoth@handhelds.org"; | 178 | list << "kergoth@handhelds.org"; |
179 | list << "harlekin@handhelds.org"; | 179 | list << "harlekin@handhelds.org"; |
180 | list << "groucho@handhelds.org"; | 180 | list << "groucho@handhelds.org"; |
181 | list << "mickeyl@handhelds.org"; | 181 | list << "mickeyl@handhelds.org"; |
182 | edit->insertStringList( list ); | 182 | edit->insertStringList( list ); |
183 | 183 | ||
184 | edit->show(); | 184 | edit->show(); |
185 | 185 | ||
186 | } | 186 | } |
187 | 187 | ||
188 | void OpieUIDemo::demoOSelector() | 188 | void OpieUIDemo::demoOSelector() |
189 | { | 189 | { |
190 | qDebug( "oselector" ); | 190 | qDebug( "oselector" ); |
191 | 191 | ||
192 | OHSSelector* sel = new OHSSelector( 0, "gradientselector" ); | 192 | OHSSelector* sel = new OHSSelector( 0, "gradientselector" ); |
193 | //#sel->resize( QSize( 200, 30 ) ); | 193 | //#sel->resize( QSize( 200, 30 ) ); |
194 | //#sel->setColors( QColor( 90, 190, 60 ), QColor( 200, 55, 255 ) ); | 194 | //#sel->setColors( QColor( 90, 190, 60 ), QColor( 200, 55, 255 ) ); |
195 | //#sel->setText( "Dark", "Light" ); | 195 | //#sel->setText( "Dark", "Light" ); |
196 | 196 | ||
197 | sel->show(); | 197 | sel->show(); |
198 | } | 198 | } |
199 | 199 | ||
200 | void OpieUIDemo::messageBox( const QString& text ) | 200 | void OpieUIDemo::messageBox( const QString& text ) |
201 | { | 201 | { |
202 | QString info; | 202 | QString info; |
203 | info = "You have selected '" + text + "'"; | 203 | info = "You have selected '" + text + "'"; |
204 | QMessageBox::information( this, "OpieUIDemo", info ); | 204 | QMessageBox::information( this, "OpieUIDemo", info ); |
205 | } | 205 | } |
diff --git a/libopie2/examples/opieui/oversatileviewdemo/oversatileviewdemo.cpp b/libopie2/examples/opieui/oversatileviewdemo/oversatileviewdemo.cpp index cf1e443..9db4e62 100644 --- a/libopie2/examples/opieui/oversatileviewdemo/oversatileviewdemo.cpp +++ b/libopie2/examples/opieui/oversatileviewdemo/oversatileviewdemo.cpp | |||
@@ -1,158 +1,158 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (C) 2003 Michael 'Mickey' Lauer | 4 | Copyright (C) 2003 Michael 'Mickey' Lauer |
5 | <mickey@tm.informatik.uni-frankfurt.de> | 5 | <mickey@tm.informatik.uni-frankfurt.de> |
6 | =. | 6 | =. |
7 | .=l. | 7 | .=l. |
8 | .>+-= | 8 | .>+-= |
9 | _;:, .> :=|. This program is free software; you can | 9 | _;:, .> :=|. This program is free software; you can |
10 | .> <`_, > . <= redistribute it and/or modify it under | 10 | .> <`_, > . <= redistribute it and/or modify it under |
11 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 11 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
12 | .="- .-=="i, .._ License as published by the Free Software | 12 | .="- .-=="i, .._ License as published by the Free Software |
13 | - . .-<_> .<> Foundation; either version 2 of the License, | 13 | - . .-<_> .<> Foundation; either version 2 of the License, |
14 | ._= =} : or (at your option) any later version. | 14 | ._= =} : or (at your option) any later version. |
15 | .%`+i> _;_. | 15 | .%`+i> _;_. |
16 | .i_,=:_. -<s. This program is distributed in the hope that | 16 | .i_,=:_. -<s. This program is distributed in the hope that |
17 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 17 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
18 | : .. .:, . . . without even the implied warranty of | 18 | : .. .:, . . . without even the implied warranty of |
19 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 19 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
20 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 20 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
21 | ..}^=.= = ; Library General Public License for more | 21 | ..}^=.= = ; Library General Public License for more |
22 | ++= -. .` .: details. | 22 | ++= -. .` .: details. |
23 | : = ...= . :.=- | 23 | : = ...= . :.=- |
24 | -. .:....=;==+<; You should have received a copy of the GNU | 24 | -. .:....=;==+<; You should have received a copy of the GNU |
25 | -_. . . )=. = Library General Public License along with | 25 | -_. . . )=. = Library General Public License along with |
26 | -- :-=` this library; see the file COPYING.LIB. | 26 | -- :-=` this library; see the file COPYING.LIB. |
27 | If not, write to the Free Software Foundation, | 27 | If not, write to the Free Software Foundation, |
28 | Inc., 59 Temple Place - Suite 330, | 28 | Inc., 59 Temple Place - Suite 330, |
29 | Boston, MA 02111-1307, USA. | 29 | Boston, MA 02111-1307, USA. |
30 | 30 | ||
31 | */ | 31 | */ |
32 | 32 | ||
33 | #include "oversatileviewdemo.h" | 33 | #include "oversatileviewdemo.h" |
34 | #include <opie2/oversatileview.h> | 34 | #include <opie2/oversatileview.h> |
35 | #include <opie2/oversatileviewitem.h> | 35 | #include <opie2/oversatileviewitem.h> |
36 | 36 | ||
37 | #include <qstring.h> | 37 | #include <qstring.h> |
38 | #include <qpixmap.h> | 38 | #include <qpixmap.h> |
39 | #include <qlistview.h> | 39 | #include <qlistview.h> |
40 | 40 | ||
41 | OVersatileViewDemo::OVersatileViewDemo( QWidget* parent, const char* name, WFlags f ) | 41 | OVersatileViewDemo::OVersatileViewDemo( QWidget* parent, const char* name, WFlags f ) |
42 | :QVBox( parent, name, f ) | 42 | :QVBox( parent, name, f ) |
43 | { | 43 | { |
44 | vv = new OVersatileView( this ); | 44 | vv = new OVersatileView( this ); |
45 | 45 | ||
46 | vv->addColumn( "First" ); | 46 | vv->addColumn( "First" ); |
47 | vv->addColumn( "2nd" ); | 47 | vv->addColumn( "2nd" ); |
48 | vv->addColumn( "IIIrd" ); | 48 | vv->addColumn( "IIIrd" ); |
49 | 49 | ||
50 | QString counter; | 50 | QString counter; |
51 | 51 | ||
52 | QPixmap leaf( "leaf.png" ); | 52 | QPixmap leaf( "leaf.png" ); |
53 | QPixmap opened( "folder_opened.png" ); | 53 | QPixmap opened( "folder_opened.png" ); |
54 | QPixmap closed( "folder_closed.png" ); | 54 | QPixmap closed( "folder_closed.png" ); |
55 | 55 | ||
56 | QPixmap leaf32( "leaf32.png" ); | 56 | QPixmap leaf32( "leaf32.png" ); |
57 | QPixmap opened32( "folder_opened32.png" ); | 57 | QPixmap opened32( "folder_opened32.png" ); |
58 | QPixmap closed32( "folder_closed32.png" ); | 58 | QPixmap closed32( "folder_closed32.png" ); |
59 | 59 | ||
60 | vv->setDefaultPixmaps( OVersatileView::Tree, leaf, opened, closed ); | 60 | vv->setDefaultPixmaps( OVersatileView::Tree, leaf, opened, closed ); |
61 | vv->setDefaultPixmaps( OVersatileView::Icons, leaf32, opened32, closed32 ); | 61 | vv->setDefaultPixmaps( OVersatileView::Icons, leaf32, opened32, closed32 ); |
62 | 62 | ||
63 | OVersatileViewItem* item; | 63 | OVersatileViewItem* item; |
64 | OVersatileViewItem* item2; | 64 | OVersatileViewItem* item2; |
65 | 65 | ||
66 | for ( int i = 0; i < 5; ++i ) | 66 | for ( int i = 0; i < 5; ++i ) |
67 | { | 67 | { |
68 | counter.sprintf( "%d", i ); | 68 | counter.sprintf( "%d", i ); |
69 | item = new OVersatileViewItem( vv, "Item", "Text", "Some more", counter ); | 69 | item = new OVersatileViewItem( vv, "Item", "Text", "Some more", counter ); |
70 | item->setRenameEnabled( true ); | 70 | item->setRenameEnabled( true ); |
71 | item2 = new OVersatileViewItem( item, "OSubitem", "123", "...", counter ); | 71 | item2 = new OVersatileViewItem( item, "OSubitem", "123", "...", counter ); |
72 | item2->setRenameEnabled( true ); | 72 | item2->setRenameEnabled( true ); |
73 | 73 | ||
74 | } | 74 | } |
75 | 75 | ||
76 | connect( vv, SIGNAL( selectionChanged() ), this, SLOT( selectionChanged() ) ); | 76 | connect( vv, SIGNAL( selectionChanged() ), this, SLOT( selectionChanged() ) ); |
77 | connect( vv, SIGNAL( selectionChanged( OVersatileViewItem * ) ), this, SLOT( selectionChanged( OVersatileViewItem * ) ) ); | 77 | connect( vv, SIGNAL( selectionChanged(OVersatileViewItem*) ), this, SLOT( selectionChanged(OVersatileViewItem*) ) ); |
78 | connect( vv, SIGNAL( currentChanged( OVersatileViewItem * ) ), this, SLOT( currentChanged( OVersatileViewItem * ) ) ); | 78 | connect( vv, SIGNAL( currentChanged(OVersatileViewItem*) ), this, SLOT( currentChanged(OVersatileViewItem*) ) ); |
79 | connect( vv, SIGNAL( clicked( OVersatileViewItem * ) ), this, SLOT( clicked( OVersatileViewItem * ) ) ); | 79 | connect( vv, SIGNAL( clicked(OVersatileViewItem*) ), this, SLOT( clicked(OVersatileViewItem*) ) ); |
80 | connect( vv, SIGNAL( pressed( OVersatileViewItem * ) ), this, SLOT( pressed( OVersatileViewItem * ) ) ); | 80 | connect( vv, SIGNAL( pressed(OVersatileViewItem*) ), this, SLOT( pressed(OVersatileViewItem*) ) ); |
81 | 81 | ||
82 | connect( vv, SIGNAL( doubleClicked( OVersatileViewItem * ) ), this, SLOT( doubleClicked( OVersatileViewItem * ) ) ); | 82 | connect( vv, SIGNAL( doubleClicked(OVersatileViewItem*) ), this, SLOT( doubleClicked(OVersatileViewItem*) ) ); |
83 | connect( vv, SIGNAL( returnPressed( OVersatileViewItem * ) ), this, SLOT( returnPressed( OVersatileViewItem * ) ) ); | 83 | connect( vv, SIGNAL( returnPressed(OVersatileViewItem*) ), this, SLOT( returnPressed(OVersatileViewItem*) ) ); |
84 | 84 | ||
85 | connect( vv, SIGNAL( onItem( OVersatileViewItem * ) ), this, SLOT( onItem( OVersatileViewItem * ) ) ); | 85 | connect( vv, SIGNAL( onItem(OVersatileViewItem*) ), this, SLOT( onItem(OVersatileViewItem*) ) ); |
86 | connect( vv, SIGNAL( onViewport() ), this, SLOT( onViewport() ) ); | 86 | connect( vv, SIGNAL( onViewport() ), this, SLOT( onViewport() ) ); |
87 | 87 | ||
88 | connect( vv, SIGNAL( expanded( OVersatileViewItem * ) ), this, SLOT( expanded( OVersatileViewItem * ) ) ); | 88 | connect( vv, SIGNAL( expanded(OVersatileViewItem*) ), this, SLOT( expanded(OVersatileViewItem*) ) ); |
89 | connect( vv, SIGNAL( collapsed( OVersatileViewItem * ) ), this, SLOT( collapsed( OVersatileViewItem * ) ) ); | 89 | connect( vv, SIGNAL( collapsed(OVersatileViewItem*) ), this, SLOT( collapsed(OVersatileViewItem*) ) ); |
90 | 90 | ||
91 | connect( vv, SIGNAL( moved() ), this, SLOT( moved() ) ); | 91 | connect( vv, SIGNAL( moved() ), this, SLOT( moved() ) ); |
92 | 92 | ||
93 | connect( vv, SIGNAL( contextMenuRequested( OVersatileViewItem *, const QPoint&, int ) ), this, SLOT( contextMenuRequested( OVersatileViewItem *, const QPoint&, int ) ) ); | 93 | connect( vv, SIGNAL( contextMenuRequested(OVersatileViewItem*,const QPoint&,int) ), this, SLOT( contextMenuRequested(OVersatileViewItem*,const QPoint&,int) ) ); |
94 | 94 | ||
95 | } | 95 | } |
96 | 96 | ||
97 | OVersatileViewDemo::~OVersatileViewDemo() | 97 | OVersatileViewDemo::~OVersatileViewDemo() |
98 | { | 98 | { |
99 | } | 99 | } |
100 | 100 | ||
101 | void OVersatileViewDemo::selectionChanged() | 101 | void OVersatileViewDemo::selectionChanged() |
102 | { | 102 | { |
103 | qDebug( "received signal selectionChanged()" ); | 103 | qDebug( "received signal selectionChanged()" ); |
104 | } | 104 | } |
105 | void OVersatileViewDemo::selectionChanged( OVersatileViewItem * item ) | 105 | void OVersatileViewDemo::selectionChanged( OVersatileViewItem * item ) |
106 | { | 106 | { |
107 | qDebug( "received signal selectionChanged(OVersatileViewItem*)" ); | 107 | qDebug( "received signal selectionChanged(OVersatileViewItem*)" ); |
108 | } | 108 | } |
109 | void OVersatileViewDemo::currentChanged( OVersatileViewItem * item ) | 109 | void OVersatileViewDemo::currentChanged( OVersatileViewItem * item ) |
110 | { | 110 | { |
111 | qDebug( "received signal currentChanged( OVersatileViewItem * )" ); | 111 | qDebug( "received signal currentChanged( OVersatileViewItem * )" ); |
112 | } | 112 | } |
113 | void OVersatileViewDemo::clicked( OVersatileViewItem * item ) | 113 | void OVersatileViewDemo::clicked( OVersatileViewItem * item ) |
114 | { | 114 | { |
115 | qDebug( "received signal clicked( OVersatileViewItem * )" ); | 115 | qDebug( "received signal clicked( OVersatileViewItem * )" ); |
116 | } | 116 | } |
117 | void OVersatileViewDemo::pressed( OVersatileViewItem * item ) | 117 | void OVersatileViewDemo::pressed( OVersatileViewItem * item ) |
118 | { | 118 | { |
119 | qDebug( "received signal pressed( OVersatileViewItem * )" ); | 119 | qDebug( "received signal pressed( OVersatileViewItem * )" ); |
120 | } | 120 | } |
121 | 121 | ||
122 | void OVersatileViewDemo::doubleClicked( OVersatileViewItem *item ) | 122 | void OVersatileViewDemo::doubleClicked( OVersatileViewItem *item ) |
123 | { | 123 | { |
124 | qDebug( "received signal doubleClicked( OVersatileViewItem *item )" ); | 124 | qDebug( "received signal doubleClicked( OVersatileViewItem *item )" ); |
125 | } | 125 | } |
126 | void OVersatileViewDemo::returnPressed( OVersatileViewItem *item ) | 126 | void OVersatileViewDemo::returnPressed( OVersatileViewItem *item ) |
127 | { | 127 | { |
128 | qDebug( "received signal returnPressed( OVersatileViewItem *item )" ); | 128 | qDebug( "received signal returnPressed( OVersatileViewItem *item )" ); |
129 | } | 129 | } |
130 | 130 | ||
131 | void OVersatileViewDemo::onItem( OVersatileViewItem *item ) | 131 | void OVersatileViewDemo::onItem( OVersatileViewItem *item ) |
132 | { | 132 | { |
133 | qDebug( "received signal onItem( OVersatileViewItem *item )" ); | 133 | qDebug( "received signal onItem( OVersatileViewItem *item )" ); |
134 | } | 134 | } |
135 | void OVersatileViewDemo::onViewport() | 135 | void OVersatileViewDemo::onViewport() |
136 | { | 136 | { |
137 | qDebug( "received signal onViewport()" ); | 137 | qDebug( "received signal onViewport()" ); |
138 | } | 138 | } |
139 | 139 | ||
140 | void OVersatileViewDemo::expanded( OVersatileViewItem *item ) | 140 | void OVersatileViewDemo::expanded( OVersatileViewItem *item ) |
141 | { | 141 | { |
142 | qDebug( "received signal expanded( OVersatileViewItem *item )" ); | 142 | qDebug( "received signal expanded( OVersatileViewItem *item )" ); |
143 | } | 143 | } |
144 | 144 | ||
145 | void OVersatileViewDemo::collapsed( OVersatileViewItem *item ) | 145 | void OVersatileViewDemo::collapsed( OVersatileViewItem *item ) |
146 | { | 146 | { |
147 | qDebug( "received signal collapsed( OVersatileViewItem *item )" ); | 147 | qDebug( "received signal collapsed( OVersatileViewItem *item )" ); |
148 | } | 148 | } |
149 | 149 | ||
150 | void OVersatileViewDemo::moved() | 150 | void OVersatileViewDemo::moved() |
151 | { | 151 | { |
152 | qDebug( "received signal moved( OVersatileViewItem *item )" ); | 152 | qDebug( "received signal moved( OVersatileViewItem *item )" ); |
153 | } | 153 | } |
154 | 154 | ||
155 | void OVersatileViewDemo::contextMenuRequested( OVersatileViewItem *item, const QPoint& pos, int col ) | 155 | void OVersatileViewDemo::contextMenuRequested( OVersatileViewItem *item, const QPoint& pos, int col ) |
156 | { | 156 | { |
157 | qDebug( "received signal contextMenuRequested( OVersatileViewItem *item )" ); | 157 | qDebug( "received signal contextMenuRequested( OVersatileViewItem *item )" ); |
158 | } | 158 | } |
diff --git a/libopie2/opiecore/device/odevice.cpp b/libopie2/opiecore/device/odevice.cpp index b8d48fe..27b0e53 100644 --- a/libopie2/opiecore/device/odevice.cpp +++ b/libopie2/opiecore/device/odevice.cpp | |||
@@ -52,193 +52,193 @@ _;:, .> :=|. This program is free software; you can | |||
52 | #include <stdlib.h> | 52 | #include <stdlib.h> |
53 | #include <signal.h> | 53 | #include <signal.h> |
54 | #include <sys/ioctl.h> | 54 | #include <sys/ioctl.h> |
55 | #include <sys/time.h> | 55 | #include <sys/time.h> |
56 | #include <unistd.h> | 56 | #include <unistd.h> |
57 | #ifndef QT_NO_SOUND | 57 | #ifndef QT_NO_SOUND |
58 | #include <linux/soundcard.h> | 58 | #include <linux/soundcard.h> |
59 | #endif | 59 | #endif |
60 | 60 | ||
61 | const char* PATH_PROC_CPUINFO = "/proc/cpuinfo"; | 61 | const char* PATH_PROC_CPUINFO = "/proc/cpuinfo"; |
62 | 62 | ||
63 | using namespace Opie; | 63 | using namespace Opie; |
64 | 64 | ||
65 | ODevice *ODevice::inst() | 65 | ODevice *ODevice::inst() |
66 | { | 66 | { |
67 | static ODevice *dev = 0; | 67 | static ODevice *dev = 0; |
68 | 68 | ||
69 | // rewrite this to only use /proc/cpuinfo or so | 69 | // rewrite this to only use /proc/cpuinfo or so |
70 | 70 | ||
71 | if ( !dev ) | 71 | if ( !dev ) |
72 | { | 72 | { |
73 | QFile f( PATH_PROC_CPUINFO ); | 73 | QFile f( PATH_PROC_CPUINFO ); |
74 | if ( f.open( IO_ReadOnly ) ) | 74 | if ( f.open( IO_ReadOnly ) ) |
75 | { | 75 | { |
76 | QTextStream s( &f ); | 76 | QTextStream s( &f ); |
77 | while ( !s.atEnd() ) | 77 | while ( !s.atEnd() ) |
78 | { | 78 | { |
79 | QString line; | 79 | QString line; |
80 | line = s.readLine(); | 80 | line = s.readLine(); |
81 | if ( line.startsWith( "Hardware" ) ) | 81 | if ( line.startsWith( "Hardware" ) ) |
82 | { | 82 | { |
83 | qDebug( "ODevice() - found '%s'", (const char*) line ); | 83 | qDebug( "ODevice() - found '%s'", (const char*) line ); |
84 | if ( line.contains( "sharp", false ) ) dev = new Zaurus(); | 84 | if ( line.contains( "sharp", false ) ) dev = new Zaurus(); |
85 | else if ( line.contains( "ipaq", false ) ) dev = new iPAQ(); | 85 | else if ( line.contains( "ipaq", false ) ) dev = new iPAQ(); |
86 | else if ( line.contains( "simpad", false ) ) dev = new SIMpad(); | 86 | else if ( line.contains( "simpad", false ) ) dev = new SIMpad(); |
87 | else if ( line.contains( "jornada", false ) ) dev = new Jornada(); | 87 | else if ( line.contains( "jornada", false ) ) dev = new Jornada(); |
88 | else if ( line.contains( "ramses", false ) ) dev = new Ramses(); | 88 | else if ( line.contains( "ramses", false ) ) dev = new Ramses(); |
89 | else qWarning( "ODevice() - unknown hardware - using default." ); | 89 | else qWarning( "ODevice() - unknown hardware - using default." ); |
90 | break; | 90 | break; |
91 | } | 91 | } |
92 | } | 92 | } |
93 | } | 93 | } |
94 | else | 94 | else |
95 | { | 95 | { |
96 | qWarning( "ODevice() - can't open '%s' - unknown hardware - using default." ); | 96 | qWarning( "ODevice() - can't open '%s' - unknown hardware - using default." ); |
97 | } | 97 | } |
98 | if ( !dev ) dev = new ODevice(); | 98 | if ( !dev ) dev = new ODevice(); |
99 | dev->init(); | 99 | dev->init(); |
100 | } | 100 | } |
101 | return dev; | 101 | return dev; |
102 | } | 102 | } |
103 | 103 | ||
104 | ODevice::ODevice() | 104 | ODevice::ODevice() |
105 | { | 105 | { |
106 | d = new ODeviceData; | 106 | d = new ODeviceData; |
107 | 107 | ||
108 | d->m_modelstr = "Unknown"; | 108 | d->m_modelstr = "Unknown"; |
109 | d->m_model = Model_Unknown; | 109 | d->m_model = Model_Unknown; |
110 | d->m_vendorstr = "Unknown"; | 110 | d->m_vendorstr = "Unknown"; |
111 | d->m_vendor = Vendor_Unknown; | 111 | d->m_vendor = Vendor_Unknown; |
112 | d->m_systemstr = "Unknown"; | 112 | d->m_systemstr = "Unknown"; |
113 | d->m_system = System_Unknown; | 113 | d->m_system = System_Unknown; |
114 | d->m_sysverstr = "0.0"; | 114 | d->m_sysverstr = "0.0"; |
115 | d->m_rotation = Rot0; | 115 | d->m_rotation = Rot0; |
116 | d->m_direction = CW; | 116 | d->m_direction = CW; |
117 | 117 | ||
118 | d->m_holdtime = 1000; // 1000ms | 118 | d->m_holdtime = 1000; // 1000ms |
119 | d->m_buttons = 0; | 119 | d->m_buttons = 0; |
120 | d->m_cpu_frequencies = new QStrList; | 120 | d->m_cpu_frequencies = new QStrList; |
121 | } | 121 | } |
122 | 122 | ||
123 | void ODevice::systemMessage ( const QCString &msg, const QByteArray & ) | 123 | void ODevice::systemMessage ( const QCString &msg, const QByteArray & ) |
124 | { | 124 | { |
125 | if ( msg == "deviceButtonMappingChanged()" ) { | 125 | if ( msg == "deviceButtonMappingChanged()" ) { |
126 | reloadButtonMapping(); | 126 | reloadButtonMapping(); |
127 | } | 127 | } |
128 | } | 128 | } |
129 | 129 | ||
130 | void ODevice::init() | 130 | void ODevice::init() |
131 | { | 131 | { |
132 | } | 132 | } |
133 | 133 | ||
134 | /** | 134 | /** |
135 | * This method initialises the button mapping | 135 | * This method initialises the button mapping |
136 | */ | 136 | */ |
137 | void ODevice::initButtons() | 137 | void ODevice::initButtons() |
138 | { | 138 | { |
139 | if ( d->m_buttons ) | 139 | if ( d->m_buttons ) |
140 | return; | 140 | return; |
141 | 141 | ||
142 | qDebug ( "init Buttons" ); | 142 | qDebug ( "init Buttons" ); |
143 | d->m_buttons = new QValueList <ODeviceButton>; | 143 | d->m_buttons = new QValueList <ODeviceButton>; |
144 | 144 | ||
145 | reloadButtonMapping(); | 145 | reloadButtonMapping(); |
146 | 146 | ||
147 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 147 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
148 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 148 | connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT( systemMessage(const QCString&,const QByteArray&))); |
149 | } | 149 | } |
150 | 150 | ||
151 | ODevice::~ODevice() | 151 | ODevice::~ODevice() |
152 | { | 152 | { |
153 | // we leak m_devicebuttons and m_cpu_frequency | 153 | // we leak m_devicebuttons and m_cpu_frequency |
154 | // but it's a singleton and it is not so importantant | 154 | // but it's a singleton and it is not so importantant |
155 | // -zecke | 155 | // -zecke |
156 | delete d; | 156 | delete d; |
157 | } | 157 | } |
158 | 158 | ||
159 | bool ODevice::setSoftSuspend ( bool /*soft*/ ) | 159 | bool ODevice::setSoftSuspend ( bool /*soft*/ ) |
160 | { | 160 | { |
161 | return false; | 161 | return false; |
162 | } | 162 | } |
163 | 163 | ||
164 | //#include <linux/apm_bios.h> | 164 | //#include <linux/apm_bios.h> |
165 | 165 | ||
166 | #define APM_IOC_SUSPEND OD_IO( 'A', 2 ) | 166 | #define APM_IOC_SUSPEND OD_IO( 'A', 2 ) |
167 | 167 | ||
168 | /** | 168 | /** |
169 | * This method will try to suspend the device | 169 | * This method will try to suspend the device |
170 | * It only works if the user is the QWS Server and the apm application | 170 | * It only works if the user is the QWS Server and the apm application |
171 | * is installed. | 171 | * is installed. |
172 | * It tries to suspend and then waits some time cause some distributions | 172 | * It tries to suspend and then waits some time cause some distributions |
173 | * do have asynchronus apm implementations. | 173 | * do have asynchronus apm implementations. |
174 | * This method will either fail and return false or it'll suspend the | 174 | * This method will either fail and return false or it'll suspend the |
175 | * device and return once the device got woken up | 175 | * device and return once the device got woken up |
176 | * | 176 | * |
177 | * @return if the device got suspended | 177 | * @return if the device got suspended |
178 | */ | 178 | */ |
179 | bool ODevice::suspend() | 179 | bool ODevice::suspend() |
180 | { | 180 | { |
181 | qDebug("ODevice::suspend"); | 181 | qDebug("ODevice::suspend"); |
182 | if ( !isQWS( ) ) // only qwsserver is allowed to suspend | 182 | if ( !isQWS( ) ) // only qwsserver is allowed to suspend |
183 | return false; | 183 | return false; |
184 | 184 | ||
185 | if ( d->m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices | 185 | if ( d->m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices |
186 | return false; | 186 | return false; |
187 | 187 | ||
188 | bool res = false; | 188 | bool res = false; |
189 | ODevice::sendSuspendmsg(); | 189 | ODevice::sendSuspendmsg(); |
190 | 190 | ||
191 | struct timeval tvs, tvn; | 191 | struct timeval tvs, tvn; |
192 | ::gettimeofday ( &tvs, 0 ); | 192 | ::gettimeofday ( &tvs, 0 ); |
193 | 193 | ||
194 | ::sync(); // flush fs caches | 194 | ::sync(); // flush fs caches |
195 | res = ( ::system ( "apm --suspend" ) == 0 ); | 195 | res = ( ::system ( "apm --suspend" ) == 0 ); |
196 | 196 | ||
197 | // This is needed because the iPAQ apm implementation is asynchronous and we | 197 | // This is needed because the iPAQ apm implementation is asynchronous and we |
198 | // can not be sure when exactly the device is really suspended | 198 | // can not be sure when exactly the device is really suspended |
199 | // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists. | 199 | // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists. |
200 | 200 | ||
201 | if ( res ) { | 201 | if ( res ) { |
202 | do { // wait at most 1.5 sec: either suspend didn't work or the device resumed | 202 | do { // wait at most 1.5 sec: either suspend didn't work or the device resumed |
203 | ::usleep ( 200 * 1000 ); | 203 | ::usleep ( 200 * 1000 ); |
204 | ::gettimeofday ( &tvn, 0 ); | 204 | ::gettimeofday ( &tvn, 0 ); |
205 | } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 1500 ); | 205 | } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 1500 ); |
206 | } | 206 | } |
207 | 207 | ||
208 | return res; | 208 | return res; |
209 | } | 209 | } |
210 | 210 | ||
211 | //#include <linux/fb.h> better not rely on kernel headers in userspace ... | 211 | //#include <linux/fb.h> better not rely on kernel headers in userspace ... |
212 | 212 | ||
213 | #define FBIOBLANK OD_IO( 'F', 0x11 ) // 0x4611 | 213 | #define FBIOBLANK OD_IO( 'F', 0x11 ) // 0x4611 |
214 | 214 | ||
215 | /* VESA Blanking Levels */ | 215 | /* VESA Blanking Levels */ |
216 | #define VESA_NO_BLANKING 0 | 216 | #define VESA_NO_BLANKING 0 |
217 | #define VESA_VSYNC_SUSPEND 1 | 217 | #define VESA_VSYNC_SUSPEND 1 |
218 | #define VESA_HSYNC_SUSPEND 2 | 218 | #define VESA_HSYNC_SUSPEND 2 |
219 | #define VESA_POWERDOWN 3 | 219 | #define VESA_POWERDOWN 3 |
220 | 220 | ||
221 | /** | 221 | /** |
222 | * This sets the display on or off | 222 | * This sets the display on or off |
223 | */ | 223 | */ |
224 | bool ODevice::setDisplayStatus ( bool on ) | 224 | bool ODevice::setDisplayStatus ( bool on ) |
225 | { | 225 | { |
226 | qDebug("ODevice::setDisplayStatus(%d)", on); | 226 | qDebug("ODevice::setDisplayStatus(%d)", on); |
227 | 227 | ||
228 | if ( d->m_model == Model_Unknown ) | 228 | if ( d->m_model == Model_Unknown ) |
229 | return false; | 229 | return false; |
230 | 230 | ||
231 | bool res = false; | 231 | bool res = false; |
232 | int fd; | 232 | int fd; |
233 | 233 | ||
234 | if (( fd = ::open ( "/dev/fb0", O_RDWR )) >= 0 ) { | 234 | if (( fd = ::open ( "/dev/fb0", O_RDWR )) >= 0 ) { |
235 | res = ( ::ioctl ( fd, FBIOBLANK, on ? VESA_NO_BLANKING : VESA_POWERDOWN ) == 0 ); | 235 | res = ( ::ioctl ( fd, FBIOBLANK, on ? VESA_NO_BLANKING : VESA_POWERDOWN ) == 0 ); |
236 | ::close ( fd ); | 236 | ::close ( fd ); |
237 | } | 237 | } |
238 | return res; | 238 | return res; |
239 | } | 239 | } |
240 | 240 | ||
241 | /** | 241 | /** |
242 | * This sets the display brightness | 242 | * This sets the display brightness |
243 | * | 243 | * |
244 | * @param p The brightness to be set on a scale from 0 to 255 | 244 | * @param p The brightness to be set on a scale from 0 to 255 |
diff --git a/libopie2/opiecore/device/odevice_ipaq.cpp b/libopie2/opiecore/device/odevice_ipaq.cpp index cc4b01a..8ecea1b 100644 --- a/libopie2/opiecore/device/odevice_ipaq.cpp +++ b/libopie2/opiecore/device/odevice_ipaq.cpp | |||
@@ -119,193 +119,193 @@ void iPAQ::init() | |||
119 | 119 | ||
120 | if ( f. open ( IO_ReadOnly )) { | 120 | if ( f. open ( IO_ReadOnly )) { |
121 | QTextStream ts ( &f ); | 121 | QTextStream ts ( &f ); |
122 | 122 | ||
123 | d->m_modelstr = "H" + ts. readLine(); | 123 | d->m_modelstr = "H" + ts. readLine(); |
124 | 124 | ||
125 | if ( d->m_modelstr == "H3100" ) | 125 | if ( d->m_modelstr == "H3100" ) |
126 | d->m_model = Model_iPAQ_H31xx; | 126 | d->m_model = Model_iPAQ_H31xx; |
127 | else if ( d->m_modelstr == "H3600" ) | 127 | else if ( d->m_modelstr == "H3600" ) |
128 | d->m_model = Model_iPAQ_H36xx; | 128 | d->m_model = Model_iPAQ_H36xx; |
129 | else if ( d->m_modelstr == "H3700" ) | 129 | else if ( d->m_modelstr == "H3700" ) |
130 | d->m_model = Model_iPAQ_H37xx; | 130 | d->m_model = Model_iPAQ_H37xx; |
131 | else if ( d->m_modelstr == "H3800" ) | 131 | else if ( d->m_modelstr == "H3800" ) |
132 | d->m_model = Model_iPAQ_H38xx; | 132 | d->m_model = Model_iPAQ_H38xx; |
133 | else if ( d->m_modelstr == "H3900" ) | 133 | else if ( d->m_modelstr == "H3900" ) |
134 | d->m_model = Model_iPAQ_H39xx; | 134 | d->m_model = Model_iPAQ_H39xx; |
135 | else if ( d->m_modelstr == "H5400" ) | 135 | else if ( d->m_modelstr == "H5400" ) |
136 | d->m_model = Model_iPAQ_H5xxx; | 136 | d->m_model = Model_iPAQ_H5xxx; |
137 | else | 137 | else |
138 | d->m_model = Model_Unknown; | 138 | d->m_model = Model_Unknown; |
139 | 139 | ||
140 | f. close(); | 140 | f. close(); |
141 | } | 141 | } |
142 | 142 | ||
143 | switch ( d->m_model ) { | 143 | switch ( d->m_model ) { |
144 | case Model_iPAQ_H31xx: | 144 | case Model_iPAQ_H31xx: |
145 | case Model_iPAQ_H38xx: | 145 | case Model_iPAQ_H38xx: |
146 | d->m_rotation = Rot90; | 146 | d->m_rotation = Rot90; |
147 | break; | 147 | break; |
148 | case Model_iPAQ_H36xx: | 148 | case Model_iPAQ_H36xx: |
149 | case Model_iPAQ_H37xx: | 149 | case Model_iPAQ_H37xx: |
150 | case Model_iPAQ_H39xx: | 150 | case Model_iPAQ_H39xx: |
151 | 151 | ||
152 | default: | 152 | default: |
153 | d->m_rotation = Rot270; | 153 | d->m_rotation = Rot270; |
154 | break; | 154 | break; |
155 | case Model_iPAQ_H5xxx: | 155 | case Model_iPAQ_H5xxx: |
156 | d->m_rotation = Rot0; | 156 | d->m_rotation = Rot0; |
157 | } | 157 | } |
158 | 158 | ||
159 | f. setName ( "/etc/familiar-version" ); | 159 | f. setName ( "/etc/familiar-version" ); |
160 | if ( f. open ( IO_ReadOnly )) { | 160 | if ( f. open ( IO_ReadOnly )) { |
161 | d->m_systemstr = "Familiar"; | 161 | d->m_systemstr = "Familiar"; |
162 | d->m_system = System_Familiar; | 162 | d->m_system = System_Familiar; |
163 | 163 | ||
164 | QTextStream ts ( &f ); | 164 | QTextStream ts ( &f ); |
165 | d->m_sysverstr = ts. readLine(). mid ( 10 ); | 165 | d->m_sysverstr = ts. readLine(). mid ( 10 ); |
166 | 166 | ||
167 | f. close(); | 167 | f. close(); |
168 | } else { | 168 | } else { |
169 | f. setName ( "/etc/oz_version" ); | 169 | f. setName ( "/etc/oz_version" ); |
170 | 170 | ||
171 | if ( f. open ( IO_ReadOnly )) { | 171 | if ( f. open ( IO_ReadOnly )) { |
172 | d->m_systemstr = "OpenEmbedded/iPaq"; | 172 | d->m_systemstr = "OpenEmbedded/iPaq"; |
173 | d->m_system = System_Familiar; | 173 | d->m_system = System_Familiar; |
174 | 174 | ||
175 | QTextStream ts ( &f ); | 175 | QTextStream ts ( &f ); |
176 | ts.setDevice ( &f ); | 176 | ts.setDevice ( &f ); |
177 | d->m_sysverstr = ts. readLine(); | 177 | d->m_sysverstr = ts. readLine(); |
178 | f. close(); | 178 | f. close(); |
179 | } | 179 | } |
180 | } | 180 | } |
181 | 181 | ||
182 | m_leds [0] = m_leds [1] = Led_Off; | 182 | m_leds [0] = m_leds [1] = Led_Off; |
183 | 183 | ||
184 | m_power_timer = 0; | 184 | m_power_timer = 0; |
185 | 185 | ||
186 | } | 186 | } |
187 | 187 | ||
188 | void iPAQ::initButtons() | 188 | void iPAQ::initButtons() |
189 | { | 189 | { |
190 | if ( d->m_buttons ) | 190 | if ( d->m_buttons ) |
191 | return; | 191 | return; |
192 | 192 | ||
193 | if ( isQWS( ) ) | 193 | if ( isQWS( ) ) |
194 | QWSServer::setKeyboardFilter ( this ); | 194 | QWSServer::setKeyboardFilter ( this ); |
195 | 195 | ||
196 | d->m_buttons = new QValueList <ODeviceButton>; | 196 | d->m_buttons = new QValueList <ODeviceButton>; |
197 | 197 | ||
198 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { | 198 | for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { |
199 | i_button *ib = ipaq_buttons + i; | 199 | i_button *ib = ipaq_buttons + i; |
200 | ODeviceButton b; | 200 | ODeviceButton b; |
201 | 201 | ||
202 | if (( ib->model & d->m_model ) == d->m_model ) { | 202 | if (( ib->model & d->m_model ) == d->m_model ) { |
203 | b. setKeycode ( ib->code ); | 203 | b. setKeycode ( ib->code ); |
204 | b. setUserText ( QObject::tr ( "Button", ib->utext )); | 204 | b. setUserText ( QObject::tr ( "Button", ib->utext )); |
205 | b. setPixmap ( Resource::loadPixmap ( ib->pix )); | 205 | b. setPixmap ( Resource::loadPixmap ( ib->pix )); |
206 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib->fpressedservice ), ib->fpressedaction )); | 206 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib->fpressedservice ), ib->fpressedaction )); |
207 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib->fheldservice ), ib->fheldaction )); | 207 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib->fheldservice ), ib->fheldaction )); |
208 | 208 | ||
209 | d->m_buttons->append ( b ); | 209 | d->m_buttons->append ( b ); |
210 | } | 210 | } |
211 | } | 211 | } |
212 | reloadButtonMapping(); | 212 | reloadButtonMapping(); |
213 | 213 | ||
214 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 214 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
215 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 215 | connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT( systemMessage(const QCString&,const QByteArray&))); |
216 | } | 216 | } |
217 | 217 | ||
218 | QValueList <OLed> iPAQ::ledList() const | 218 | QValueList <OLed> iPAQ::ledList() const |
219 | { | 219 | { |
220 | QValueList <OLed> vl; | 220 | QValueList <OLed> vl; |
221 | vl << Led_Power; | 221 | vl << Led_Power; |
222 | 222 | ||
223 | if ( d->m_model == Model_iPAQ_H38xx ) | 223 | if ( d->m_model == Model_iPAQ_H38xx ) |
224 | vl << Led_BlueTooth; | 224 | vl << Led_BlueTooth; |
225 | return vl; | 225 | return vl; |
226 | } | 226 | } |
227 | 227 | ||
228 | QValueList <OLedState> iPAQ::ledStateList ( OLed l ) const | 228 | QValueList <OLedState> iPAQ::ledStateList ( OLed l ) const |
229 | { | 229 | { |
230 | QValueList <OLedState> vl; | 230 | QValueList <OLedState> vl; |
231 | 231 | ||
232 | if ( l == Led_Power ) | 232 | if ( l == Led_Power ) |
233 | vl << Led_Off << Led_On << Led_BlinkSlow << Led_BlinkFast; | 233 | vl << Led_Off << Led_On << Led_BlinkSlow << Led_BlinkFast; |
234 | else if ( l == Led_BlueTooth && d->m_model == Model_iPAQ_H38xx ) | 234 | else if ( l == Led_BlueTooth && d->m_model == Model_iPAQ_H38xx ) |
235 | vl << Led_Off; // << Led_On << ??? | 235 | vl << Led_Off; // << Led_On << ??? |
236 | 236 | ||
237 | return vl; | 237 | return vl; |
238 | } | 238 | } |
239 | 239 | ||
240 | OLedState iPAQ::ledState ( OLed l ) const | 240 | OLedState iPAQ::ledState ( OLed l ) const |
241 | { | 241 | { |
242 | switch ( l ) { | 242 | switch ( l ) { |
243 | case Led_Power: | 243 | case Led_Power: |
244 | return m_leds [0]; | 244 | return m_leds [0]; |
245 | case Led_BlueTooth: | 245 | case Led_BlueTooth: |
246 | return m_leds [1]; | 246 | return m_leds [1]; |
247 | default: | 247 | default: |
248 | return Led_Off; | 248 | return Led_Off; |
249 | } | 249 | } |
250 | } | 250 | } |
251 | 251 | ||
252 | bool iPAQ::setLedState ( OLed l, OLedState st ) | 252 | bool iPAQ::setLedState ( OLed l, OLedState st ) |
253 | { | 253 | { |
254 | static int fd = ::open ( "/dev/touchscreen/0", O_RDWR | O_NONBLOCK ); | 254 | static int fd = ::open ( "/dev/touchscreen/0", O_RDWR | O_NONBLOCK ); |
255 | 255 | ||
256 | if ( l == Led_Power ) { | 256 | if ( l == Led_Power ) { |
257 | if ( fd >= 0 ) { | 257 | if ( fd >= 0 ) { |
258 | LED_IN leds; | 258 | LED_IN leds; |
259 | ::memset ( &leds, 0, sizeof( leds )); | 259 | ::memset ( &leds, 0, sizeof( leds )); |
260 | leds. TotalTime = 0; | 260 | leds. TotalTime = 0; |
261 | leds. OnTime = 0; | 261 | leds. OnTime = 0; |
262 | leds. OffTime = 1; | 262 | leds. OffTime = 1; |
263 | leds. OffOnBlink = 2; | 263 | leds. OffOnBlink = 2; |
264 | 264 | ||
265 | switch ( st ) { | 265 | switch ( st ) { |
266 | case Led_Off : leds. OffOnBlink = 0; break; | 266 | case Led_Off : leds. OffOnBlink = 0; break; |
267 | case Led_On : leds. OffOnBlink = 1; break; | 267 | case Led_On : leds. OffOnBlink = 1; break; |
268 | case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; | 268 | case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; |
269 | case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; | 269 | case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; |
270 | } | 270 | } |
271 | 271 | ||
272 | if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) { | 272 | if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) { |
273 | m_leds [0] = st; | 273 | m_leds [0] = st; |
274 | return true; | 274 | return true; |
275 | } | 275 | } |
276 | } | 276 | } |
277 | } | 277 | } |
278 | return false; | 278 | return false; |
279 | } | 279 | } |
280 | 280 | ||
281 | 281 | ||
282 | bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) | 282 | bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) |
283 | { | 283 | { |
284 | int newkeycode = keycode; | 284 | int newkeycode = keycode; |
285 | 285 | ||
286 | switch ( keycode ) { | 286 | switch ( keycode ) { |
287 | // H38xx/H39xx have no "Q" key anymore - this is now the Mail key | 287 | // H38xx/H39xx have no "Q" key anymore - this is now the Mail key |
288 | case HardKey_Menu: { | 288 | case HardKey_Menu: { |
289 | if (( d->m_model == Model_iPAQ_H38xx ) || | 289 | if (( d->m_model == Model_iPAQ_H38xx ) || |
290 | ( d->m_model == Model_iPAQ_H39xx ) || | 290 | ( d->m_model == Model_iPAQ_H39xx ) || |
291 | ( d->m_model == Model_iPAQ_H5xxx)) { | 291 | ( d->m_model == Model_iPAQ_H5xxx)) { |
292 | newkeycode = HardKey_Mail; | 292 | newkeycode = HardKey_Mail; |
293 | } | 293 | } |
294 | break; | 294 | break; |
295 | } | 295 | } |
296 | 296 | ||
297 | // Rotate cursor keys 180° or 270° | 297 | // Rotate cursor keys 180° or 270° |
298 | case Key_Left : | 298 | case Key_Left : |
299 | case Key_Right: | 299 | case Key_Right: |
300 | case Key_Up : | 300 | case Key_Up : |
301 | case Key_Down : { | 301 | case Key_Down : { |
302 | if (( d->m_model == Model_iPAQ_H31xx ) || | 302 | if (( d->m_model == Model_iPAQ_H31xx ) || |
303 | ( d->m_model == Model_iPAQ_H38xx )) { | 303 | ( d->m_model == Model_iPAQ_H38xx )) { |
304 | newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4; | 304 | newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4; |
305 | } | 305 | } |
306 | // Rotate the cursor keys by 270° | 306 | // Rotate the cursor keys by 270° |
307 | // keycode - Key_Left = position of the button starting from left clockwise | 307 | // keycode - Key_Left = position of the button starting from left clockwise |
308 | // add the rotation to it and modolo. No we've the original offset | 308 | // add the rotation to it and modolo. No we've the original offset |
309 | // add the offset to the Key_Left key | 309 | // add the offset to the Key_Left key |
310 | if ( d-> m_model == Model_iPAQ_H5xxx ) | 310 | if ( d-> m_model == Model_iPAQ_H5xxx ) |
311 | newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4; | 311 | newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4; |
diff --git a/libopie2/opiecore/device/odevice_simpad.cpp b/libopie2/opiecore/device/odevice_simpad.cpp index 31b9297..90aca2f 100644 --- a/libopie2/opiecore/device/odevice_simpad.cpp +++ b/libopie2/opiecore/device/odevice_simpad.cpp | |||
@@ -96,193 +96,193 @@ struct s_button simpad_buttons [] = { | |||
96 | Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Upper+Left"), | 96 | Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Upper+Left"), |
97 | "devicebuttons/simpad_upper_left", | 97 | "devicebuttons/simpad_upper_left", |
98 | "QPE/Rotation", "flip()", | 98 | "QPE/Rotation", "flip()", |
99 | "QPE/Rotation", "flip()" }, | 99 | "QPE/Rotation", "flip()" }, |
100 | /* | 100 | /* |
101 | { Model_SIMpad_CL4 | Model_SIMpad_SL4 | Model_SIMpad_SLC | Model_SIMpad_TSinus, | 101 | { Model_SIMpad_CL4 | Model_SIMpad_SL4 | Model_SIMpad_SLC | Model_SIMpad_TSinus, |
102 | Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Lower+Upper"), | 102 | Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Lower+Upper"), |
103 | "devicebuttons/simpad_lower_upper", | 103 | "devicebuttons/simpad_lower_upper", |
104 | "QPE/Launcher", "home()", | 104 | "QPE/Launcher", "home()", |
105 | "buttonsettings", "raise()" }, | 105 | "buttonsettings", "raise()" }, |
106 | { Model_SIMpad_CL4 | Model_SIMpad_SL4 | Model_SIMpad_SLC | Model_SIMpad_TSinus, | 106 | { Model_SIMpad_CL4 | Model_SIMpad_SL4 | Model_SIMpad_SLC | Model_SIMpad_TSinus, |
107 | Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Lower+Upper"), | 107 | Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Lower+Upper"), |
108 | "devicebuttons/simpad_upper_lower", | 108 | "devicebuttons/simpad_upper_lower", |
109 | "QPE/Launcher", "home()", | 109 | "QPE/Launcher", "home()", |
110 | "buttonsettings", "raise()" }, | 110 | "buttonsettings", "raise()" }, |
111 | */ | 111 | */ |
112 | }; | 112 | }; |
113 | 113 | ||
114 | void SIMpad::init() | 114 | void SIMpad::init() |
115 | { | 115 | { |
116 | d->m_vendorstr = "SIEMENS"; | 116 | d->m_vendorstr = "SIEMENS"; |
117 | d->m_vendor = Vendor_SIEMENS; | 117 | d->m_vendor = Vendor_SIEMENS; |
118 | 118 | ||
119 | QFile f ( "/proc/hal/model" ); | 119 | QFile f ( "/proc/hal/model" ); |
120 | 120 | ||
121 | //TODO Implement model checking | 121 | //TODO Implement model checking |
122 | //FIXME For now we assume an SL4 | 122 | //FIXME For now we assume an SL4 |
123 | 123 | ||
124 | d->m_modelstr = "SL4"; | 124 | d->m_modelstr = "SL4"; |
125 | d->m_model = Model_SIMpad_SL4; | 125 | d->m_model = Model_SIMpad_SL4; |
126 | 126 | ||
127 | switch ( d->m_model ) { | 127 | switch ( d->m_model ) { |
128 | default: | 128 | default: |
129 | d->m_rotation = Rot0; | 129 | d->m_rotation = Rot0; |
130 | d->m_direction = CCW; | 130 | d->m_direction = CCW; |
131 | d->m_holdtime = 1000; // 1000ms | 131 | d->m_holdtime = 1000; // 1000ms |
132 | 132 | ||
133 | break; | 133 | break; |
134 | } | 134 | } |
135 | 135 | ||
136 | f. setName ( "/etc/familiar-version" ); | 136 | f. setName ( "/etc/familiar-version" ); |
137 | if ( f. open ( IO_ReadOnly )) { | 137 | if ( f. open ( IO_ReadOnly )) { |
138 | d->m_systemstr = "Familiar"; | 138 | d->m_systemstr = "Familiar"; |
139 | d->m_system = System_Familiar; | 139 | d->m_system = System_Familiar; |
140 | 140 | ||
141 | QTextStream ts ( &f ); | 141 | QTextStream ts ( &f ); |
142 | d->m_sysverstr = ts. readLine(). mid ( 10 ); | 142 | d->m_sysverstr = ts. readLine(). mid ( 10 ); |
143 | 143 | ||
144 | f. close(); | 144 | f. close(); |
145 | } else { | 145 | } else { |
146 | f. setName ( "/etc/oz_version" ); | 146 | f. setName ( "/etc/oz_version" ); |
147 | 147 | ||
148 | if ( f. open ( IO_ReadOnly )) { | 148 | if ( f. open ( IO_ReadOnly )) { |
149 | d->m_systemstr = "OpenEmbedded/SIMpad"; | 149 | d->m_systemstr = "OpenEmbedded/SIMpad"; |
150 | d->m_system = System_OpenZaurus; | 150 | d->m_system = System_OpenZaurus; |
151 | 151 | ||
152 | QTextStream ts ( &f ); | 152 | QTextStream ts ( &f ); |
153 | ts.setDevice ( &f ); | 153 | ts.setDevice ( &f ); |
154 | d->m_sysverstr = ts. readLine(); | 154 | d->m_sysverstr = ts. readLine(); |
155 | f. close(); | 155 | f. close(); |
156 | } | 156 | } |
157 | } | 157 | } |
158 | 158 | ||
159 | m_leds [0] = m_leds [1] = Led_Off; | 159 | m_leds [0] = m_leds [1] = Led_Off; |
160 | 160 | ||
161 | m_power_timer = 0; | 161 | m_power_timer = 0; |
162 | 162 | ||
163 | } | 163 | } |
164 | 164 | ||
165 | void SIMpad::initButtons() | 165 | void SIMpad::initButtons() |
166 | { | 166 | { |
167 | if ( d->m_buttons ) | 167 | if ( d->m_buttons ) |
168 | return; | 168 | return; |
169 | 169 | ||
170 | if ( isQWS( ) ) | 170 | if ( isQWS( ) ) |
171 | QWSServer::setKeyboardFilter ( this ); | 171 | QWSServer::setKeyboardFilter ( this ); |
172 | 172 | ||
173 | d->m_buttons = new QValueList <ODeviceButton>; | 173 | d->m_buttons = new QValueList <ODeviceButton>; |
174 | 174 | ||
175 | for ( uint i = 0; i < ( sizeof( simpad_buttons ) / sizeof( s_button )); i++ ) { | 175 | for ( uint i = 0; i < ( sizeof( simpad_buttons ) / sizeof( s_button )); i++ ) { |
176 | s_button *sb = simpad_buttons + i; | 176 | s_button *sb = simpad_buttons + i; |
177 | ODeviceButton b; | 177 | ODeviceButton b; |
178 | 178 | ||
179 | if (( sb->model & d->m_model ) == d->m_model ) { | 179 | if (( sb->model & d->m_model ) == d->m_model ) { |
180 | b. setKeycode ( sb->code ); | 180 | b. setKeycode ( sb->code ); |
181 | b. setUserText ( QObject::tr ( "Button", sb->utext )); | 181 | b. setUserText ( QObject::tr ( "Button", sb->utext )); |
182 | b. setPixmap ( Resource::loadPixmap ( sb->pix )); | 182 | b. setPixmap ( Resource::loadPixmap ( sb->pix )); |
183 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( sb->fpressedservice ), sb->fpressedaction )); | 183 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( sb->fpressedservice ), sb->fpressedaction )); |
184 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( sb->fheldservice ), sb->fheldaction )); | 184 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( sb->fheldservice ), sb->fheldaction )); |
185 | 185 | ||
186 | d->m_buttons->append ( b ); | 186 | d->m_buttons->append ( b ); |
187 | } | 187 | } |
188 | } | 188 | } |
189 | reloadButtonMapping(); | 189 | reloadButtonMapping(); |
190 | 190 | ||
191 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 191 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
192 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 192 | connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT( systemMessage(const QCString&,const QByteArray&))); |
193 | } | 193 | } |
194 | 194 | ||
195 | // SIMpad boardcontrol register CS3 | 195 | // SIMpad boardcontrol register CS3 |
196 | #define SIMPAD_BOARDCONTROL "/proc/cs3" | 196 | #define SIMPAD_BOARDCONTROL "/proc/cs3" |
197 | #define SIMPAD_VCC_5V_EN 0x0001 // For 5V PCMCIA | 197 | #define SIMPAD_VCC_5V_EN 0x0001 // For 5V PCMCIA |
198 | #define SIMPAD_VCC_3V_EN 0x0002 // FOR 3.3V PCMCIA | 198 | #define SIMPAD_VCC_3V_EN 0x0002 // FOR 3.3V PCMCIA |
199 | #define SIMPAD_EN1 0x0004 // This is only for EPROM's | 199 | #define SIMPAD_EN1 0x0004 // This is only for EPROM's |
200 | #define SIMPAD_EN0 0x0008 // Both should be enable for 3.3V or 5V | 200 | #define SIMPAD_EN0 0x0008 // Both should be enable for 3.3V or 5V |
201 | #define SIMPAD_DISPLAY_ON 0x0010 | 201 | #define SIMPAD_DISPLAY_ON 0x0010 |
202 | #define SIMPAD_PCMCIA_BUFF_DIS 0x0020 | 202 | #define SIMPAD_PCMCIA_BUFF_DIS 0x0020 |
203 | #define SIMPAD_MQ_RESET 0x0040 | 203 | #define SIMPAD_MQ_RESET 0x0040 |
204 | #define SIMPAD_PCMCIA_RESET 0x0080 | 204 | #define SIMPAD_PCMCIA_RESET 0x0080 |
205 | #define SIMPAD_DECT_POWER_ON 0x0100 | 205 | #define SIMPAD_DECT_POWER_ON 0x0100 |
206 | #define SIMPAD_IRDA_SD 0x0200 // Shutdown for powersave | 206 | #define SIMPAD_IRDA_SD 0x0200 // Shutdown for powersave |
207 | #define SIMPAD_RS232_ON 0x0400 | 207 | #define SIMPAD_RS232_ON 0x0400 |
208 | #define SIMPAD_SD_MEDIAQ 0x0800 // Shutdown for powersave | 208 | #define SIMPAD_SD_MEDIAQ 0x0800 // Shutdown for powersave |
209 | #define SIMPAD_LED2_ON 0x1000 | 209 | #define SIMPAD_LED2_ON 0x1000 |
210 | #define SIMPAD_IRDA_MODE 0x2000 // Fast/Slow IrDA mode | 210 | #define SIMPAD_IRDA_MODE 0x2000 // Fast/Slow IrDA mode |
211 | #define SIMPAD_ENABLE_5V 0x4000 // Enable 5V circuit | 211 | #define SIMPAD_ENABLE_5V 0x4000 // Enable 5V circuit |
212 | #define SIMPAD_RESET_SIMCARD 0x8000 | 212 | #define SIMPAD_RESET_SIMCARD 0x8000 |
213 | 213 | ||
214 | //SIMpad touchscreen backlight strength control | 214 | //SIMpad touchscreen backlight strength control |
215 | #define SIMPAD_BACKLIGHT_CONTROL "/proc/driver/mq200/registers/PWM_CONTROL" | 215 | #define SIMPAD_BACKLIGHT_CONTROL "/proc/driver/mq200/registers/PWM_CONTROL" |
216 | #define SIMPAD_BACKLIGHT_MASK 0x00a10044 | 216 | #define SIMPAD_BACKLIGHT_MASK 0x00a10044 |
217 | 217 | ||
218 | QValueList <OLed> SIMpad::ledList() const | 218 | QValueList <OLed> SIMpad::ledList() const |
219 | { | 219 | { |
220 | QValueList <OLed> vl; | 220 | QValueList <OLed> vl; |
221 | vl << Led_Power; //FIXME which LED is LED2 ? The green one or the amber one? | 221 | vl << Led_Power; //FIXME which LED is LED2 ? The green one or the amber one? |
222 | //vl << Led_Mail; //TODO find out if LED1 is accessible anyway | 222 | //vl << Led_Mail; //TODO find out if LED1 is accessible anyway |
223 | return vl; | 223 | return vl; |
224 | } | 224 | } |
225 | 225 | ||
226 | QValueList <OLedState> SIMpad::ledStateList ( OLed l ) const | 226 | QValueList <OLedState> SIMpad::ledStateList ( OLed l ) const |
227 | { | 227 | { |
228 | QValueList <OLedState> vl; | 228 | QValueList <OLedState> vl; |
229 | 229 | ||
230 | if ( l == Led_Power ) //FIXME which LED is LED2 ? The green one or the amber one? | 230 | if ( l == Led_Power ) //FIXME which LED is LED2 ? The green one or the amber one? |
231 | vl << Led_Off << Led_On; | 231 | vl << Led_Off << Led_On; |
232 | //else if ( l == Led_Mail ) //TODO find out if LED1 is accessible anyway | 232 | //else if ( l == Led_Mail ) //TODO find out if LED1 is accessible anyway |
233 | //vl << Led_Off; | 233 | //vl << Led_Off; |
234 | return vl; | 234 | return vl; |
235 | } | 235 | } |
236 | 236 | ||
237 | OLedState SIMpad::ledState ( OLed l ) const | 237 | OLedState SIMpad::ledState ( OLed l ) const |
238 | { | 238 | { |
239 | switch ( l ) { | 239 | switch ( l ) { |
240 | case Led_Power: | 240 | case Led_Power: |
241 | return m_leds [0]; | 241 | return m_leds [0]; |
242 | //case Led_Mail: | 242 | //case Led_Mail: |
243 | //return m_leds [1]; | 243 | //return m_leds [1]; |
244 | default: | 244 | default: |
245 | return Led_Off; | 245 | return Led_Off; |
246 | } | 246 | } |
247 | } | 247 | } |
248 | 248 | ||
249 | bool SIMpad::setLedState ( OLed l, OLedState st ) | 249 | bool SIMpad::setLedState ( OLed l, OLedState st ) |
250 | { | 250 | { |
251 | #if 0 | 251 | #if 0 |
252 | static int fd = ::open ( SIMPAD_BOARDCONTROL, O_RDWR | O_NONBLOCK ); | 252 | static int fd = ::open ( SIMPAD_BOARDCONTROL, O_RDWR | O_NONBLOCK ); |
253 | 253 | ||
254 | /*TODO Implement this like that: | 254 | /*TODO Implement this like that: |
255 | read from cs3 | 255 | read from cs3 |
256 | && with SIMPAD_LED2_ON | 256 | && with SIMPAD_LED2_ON |
257 | write to cs3 */ | 257 | write to cs3 */ |
258 | m_leds [0] = st; | 258 | m_leds [0] = st; |
259 | return true; | 259 | return true; |
260 | } | 260 | } |
261 | } | 261 | } |
262 | } | 262 | } |
263 | 263 | ||
264 | #endif | 264 | #endif |
265 | return false; | 265 | return false; |
266 | } | 266 | } |
267 | 267 | ||
268 | 268 | ||
269 | bool SIMpad::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) | 269 | bool SIMpad::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) |
270 | { | 270 | { |
271 | //TODO | 271 | //TODO |
272 | return false; | 272 | return false; |
273 | } | 273 | } |
274 | 274 | ||
275 | void SIMpad::timerEvent ( QTimerEvent * ) | 275 | void SIMpad::timerEvent ( QTimerEvent * ) |
276 | { | 276 | { |
277 | killTimer ( m_power_timer ); | 277 | killTimer ( m_power_timer ); |
278 | m_power_timer = 0; | 278 | m_power_timer = 0; |
279 | QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, true, false ); | 279 | QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, true, false ); |
280 | QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, false, false ); | 280 | QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, false, false ); |
281 | } | 281 | } |
282 | 282 | ||
283 | 283 | ||
284 | void SIMpad::playAlarmSound() | 284 | void SIMpad::playAlarmSound() |
285 | { | 285 | { |
286 | #ifndef QT_NO_SOUND | 286 | #ifndef QT_NO_SOUND |
287 | static Sound snd ( "alarm" ); | 287 | static Sound snd ( "alarm" ); |
288 | int fd; | 288 | int fd; |
diff --git a/libopie2/opiecore/device/odevice_yopy.cpp b/libopie2/opiecore/device/odevice_yopy.cpp index a76f90b..d241db8 100644 --- a/libopie2/opiecore/device/odevice_yopy.cpp +++ b/libopie2/opiecore/device/odevice_yopy.cpp | |||
@@ -26,138 +26,138 @@ _;:, .> :=|. This program is free software; you can | |||
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include "odevice_yopy.h" | 30 | #include "odevice_yopy.h" |
31 | 31 | ||
32 | /* QT */ | 32 | /* QT */ |
33 | #include <qapplication.h> | 33 | #include <qapplication.h> |
34 | #include <qfile.h> | 34 | #include <qfile.h> |
35 | #include <qtextstream.h> | 35 | #include <qtextstream.h> |
36 | #include <qwindowsystem_qws.h> | 36 | #include <qwindowsystem_qws.h> |
37 | 37 | ||
38 | /* OPIE */ | 38 | /* OPIE */ |
39 | #include <qpe/config.h> | 39 | #include <qpe/config.h> |
40 | #include <qpe/resource.h> | 40 | #include <qpe/resource.h> |
41 | #include <qpe/sound.h> | 41 | #include <qpe/sound.h> |
42 | #include <qpe/qcopenvelope_qws.h> | 42 | #include <qpe/qcopenvelope_qws.h> |
43 | 43 | ||
44 | /* STD */ | 44 | /* STD */ |
45 | #include <fcntl.h> | 45 | #include <fcntl.h> |
46 | #include <math.h> | 46 | #include <math.h> |
47 | #include <stdlib.h> | 47 | #include <stdlib.h> |
48 | #include <signal.h> | 48 | #include <signal.h> |
49 | #include <sys/ioctl.h> | 49 | #include <sys/ioctl.h> |
50 | #include <sys/time.h> | 50 | #include <sys/time.h> |
51 | #include <unistd.h> | 51 | #include <unistd.h> |
52 | #ifndef QT_NO_SOUND | 52 | #ifndef QT_NO_SOUND |
53 | #include <linux/soundcard.h> | 53 | #include <linux/soundcard.h> |
54 | #endif | 54 | #endif |
55 | 55 | ||
56 | using namespace Opie; | 56 | using namespace Opie; |
57 | 57 | ||
58 | struct yopy_button yopy_buttons [] = { | 58 | struct yopy_button yopy_buttons [] = { |
59 | { Qt::Key_F10, QT_TRANSLATE_NOOP( "Button", "Action Button" ), | 59 | { Qt::Key_F10, QT_TRANSLATE_NOOP( "Button", "Action Button" ), |
60 | "devicebuttons/yopy_action", | 60 | "devicebuttons/yopy_action", |
61 | "datebook", "nextView()", | 61 | "datebook", "nextView()", |
62 | "today", "raise()" }, | 62 | "today", "raise()" }, |
63 | { Qt::Key_F11, QT_TRANSLATE_NOOP( "Button", "OK Button" ), | 63 | { Qt::Key_F11, QT_TRANSLATE_NOOP( "Button", "OK Button" ), |
64 | "devicebuttons/yopy_ok", | 64 | "devicebuttons/yopy_ok", |
65 | "addressbook", "raise()", | 65 | "addressbook", "raise()", |
66 | "addressbook", "beamBusinessCard()" }, | 66 | "addressbook", "beamBusinessCard()" }, |
67 | { Qt::Key_F12, QT_TRANSLATE_NOOP( "Button", "End Button" ), | 67 | { Qt::Key_F12, QT_TRANSLATE_NOOP( "Button", "End Button" ), |
68 | "devicebuttons/yopy_end", | 68 | "devicebuttons/yopy_end", |
69 | "QPE/Launcher", "home()", | 69 | "QPE/Launcher", "home()", |
70 | "buttonsettings", "raise()" }, | 70 | "buttonsettings", "raise()" }, |
71 | }; | 71 | }; |
72 | 72 | ||
73 | void Yopy::init() | 73 | void Yopy::init() |
74 | { | 74 | { |
75 | d->m_vendorstr = "G.Mate"; | 75 | d->m_vendorstr = "G.Mate"; |
76 | d->m_vendor = Vendor_GMate; | 76 | d->m_vendor = Vendor_GMate; |
77 | d->m_modelstr = "Yopy3700"; | 77 | d->m_modelstr = "Yopy3700"; |
78 | d->m_model = Model_Yopy_3700; | 78 | d->m_model = Model_Yopy_3700; |
79 | d->m_rotation = Rot0; | 79 | d->m_rotation = Rot0; |
80 | 80 | ||
81 | d->m_systemstr = "Linupy"; | 81 | d->m_systemstr = "Linupy"; |
82 | d->m_system = System_Linupy; | 82 | d->m_system = System_Linupy; |
83 | 83 | ||
84 | QFile f ( "/etc/issue" ); | 84 | QFile f ( "/etc/issue" ); |
85 | if ( f. open ( IO_ReadOnly ) ) | 85 | if ( f. open ( IO_ReadOnly ) ) |
86 | { | 86 | { |
87 | QTextStream ts ( &f ); | 87 | QTextStream ts ( &f ); |
88 | ts.readLine(); | 88 | ts.readLine(); |
89 | d->m_sysverstr = ts. readLine(); | 89 | d->m_sysverstr = ts. readLine(); |
90 | f. close(); | 90 | f. close(); |
91 | } | 91 | } |
92 | } | 92 | } |
93 | 93 | ||
94 | 94 | ||
95 | void Yopy::initButtons() | 95 | void Yopy::initButtons() |
96 | { | 96 | { |
97 | if ( d->m_buttons ) | 97 | if ( d->m_buttons ) |
98 | return ; | 98 | return ; |
99 | 99 | ||
100 | d->m_buttons = new QValueList <ODeviceButton>; | 100 | d->m_buttons = new QValueList <ODeviceButton>; |
101 | 101 | ||
102 | for ( uint i = 0; i < ( sizeof( yopy_buttons ) / sizeof( yopy_button ) ); i++ ) | 102 | for ( uint i = 0; i < ( sizeof( yopy_buttons ) / sizeof( yopy_button ) ); i++ ) |
103 | { | 103 | { |
104 | 104 | ||
105 | yopy_button *ib = yopy_buttons + i; | 105 | yopy_button *ib = yopy_buttons + i; |
106 | 106 | ||
107 | ODeviceButton b; | 107 | ODeviceButton b; |
108 | 108 | ||
109 | b. setKeycode ( ib->code ); | 109 | b. setKeycode ( ib->code ); |
110 | b. setUserText ( QObject::tr ( "Button", ib->utext ) ); | 110 | b. setUserText ( QObject::tr ( "Button", ib->utext ) ); |
111 | b. setPixmap ( Resource::loadPixmap ( ib->pix ) ); | 111 | b. setPixmap ( Resource::loadPixmap ( ib->pix ) ); |
112 | b. setFactoryPresetPressedAction | 112 | b. setFactoryPresetPressedAction |
113 | ( OQCopMessage( makeChannel( ib->fpressedservice ), ib->fpressedaction ) ); | 113 | ( OQCopMessage( makeChannel( ib->fpressedservice ), ib->fpressedaction ) ); |
114 | b. setFactoryPresetHeldAction | 114 | b. setFactoryPresetHeldAction |
115 | ( OQCopMessage( makeChannel( ib->fheldservice ), ib->fheldaction ) ); | 115 | ( OQCopMessage( makeChannel( ib->fheldservice ), ib->fheldaction ) ); |
116 | 116 | ||
117 | d->m_buttons->append ( b ); | 117 | d->m_buttons->append ( b ); |
118 | } | 118 | } |
119 | reloadButtonMapping(); | 119 | reloadButtonMapping(); |
120 | 120 | ||
121 | QCopChannel *sysch = new QCopChannel( "QPE/System", this ); | 121 | QCopChannel *sysch = new QCopChannel( "QPE/System", this ); |
122 | connect( sysch, SIGNAL( received( const QCString &, const QByteArray & ) ), | 122 | connect( sysch, SIGNAL( received(const QCString&,const QByteArray&) ), |
123 | this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) ); | 123 | this, SLOT( systemMessage(const QCString&,const QByteArray&) ) ); |
124 | } | 124 | } |
125 | 125 | ||
126 | 126 | ||
127 | bool Yopy::suspend() | 127 | bool Yopy::suspend() |
128 | { | 128 | { |
129 | /* Opie for Yopy does not implement its own power management at the | 129 | /* Opie for Yopy does not implement its own power management at the |
130 | moment. The public version runs parallel to X, and relies on the | 130 | moment. The public version runs parallel to X, and relies on the |
131 | existing power management features. */ | 131 | existing power management features. */ |
132 | return false; | 132 | return false; |
133 | } | 133 | } |
134 | 134 | ||
135 | 135 | ||
136 | bool Yopy::setDisplayBrightness( int bright ) | 136 | bool Yopy::setDisplayBrightness( int bright ) |
137 | { | 137 | { |
138 | /* The code here works, but is disabled as the current version runs | 138 | /* The code here works, but is disabled as the current version runs |
139 | parallel to X, and relies on the existing backlight demon. */ | 139 | parallel to X, and relies on the existing backlight demon. */ |
140 | #if 0 | 140 | #if 0 |
141 | if ( QFile::exists( "/proc/sys/pm/light" ) ) | 141 | if ( QFile::exists( "/proc/sys/pm/light" ) ) |
142 | { | 142 | { |
143 | int fd = ::open( "/proc/sys/pm/light", O_WRONLY ); | 143 | int fd = ::open( "/proc/sys/pm/light", O_WRONLY ); |
144 | if ( fd >= 0 ) | 144 | if ( fd >= 0 ) |
145 | { | 145 | { |
146 | if ( bright ) | 146 | if ( bright ) |
147 | ::write( fd, "1\n", 2 ); | 147 | ::write( fd, "1\n", 2 ); |
148 | else | 148 | else |
149 | ::write( fd, "0\n", 2 ); | 149 | ::write( fd, "0\n", 2 ); |
150 | ::close( fd ); | 150 | ::close( fd ); |
151 | return true; | 151 | return true; |
152 | } | 152 | } |
153 | } | 153 | } |
154 | #endif | 154 | #endif |
155 | return false; | 155 | return false; |
156 | } | 156 | } |
157 | 157 | ||
158 | 158 | ||
159 | int Yopy::displayBrightnessResolution() const | 159 | int Yopy::displayBrightnessResolution() const |
160 | { | 160 | { |
161 | return 2; | 161 | return 2; |
162 | } | 162 | } |
163 | 163 | ||
diff --git a/libopie2/opiecore/device/odevice_zaurus.cpp b/libopie2/opiecore/device/odevice_zaurus.cpp index 9d23a12..8ab3cbe 100644 --- a/libopie2/opiecore/device/odevice_zaurus.cpp +++ b/libopie2/opiecore/device/odevice_zaurus.cpp | |||
@@ -159,194 +159,194 @@ void Zaurus::init() | |||
159 | } | 159 | } |
160 | else { | 160 | else { |
161 | d->m_systemstr = "Zaurus"; | 161 | d->m_systemstr = "Zaurus"; |
162 | d->m_system = System_Zaurus; | 162 | d->m_system = System_Zaurus; |
163 | } | 163 | } |
164 | 164 | ||
165 | f. setName ( "/proc/cpuinfo" ); | 165 | f. setName ( "/proc/cpuinfo" ); |
166 | if ( f. open ( IO_ReadOnly ) ) { | 166 | if ( f. open ( IO_ReadOnly ) ) { |
167 | QTextStream ts ( &f ); | 167 | QTextStream ts ( &f ); |
168 | QString line; | 168 | QString line; |
169 | while( line = ts. readLine() ) { | 169 | while( line = ts. readLine() ) { |
170 | if ( line. left ( 8 ) == "Hardware" ) | 170 | if ( line. left ( 8 ) == "Hardware" ) |
171 | break; | 171 | break; |
172 | } | 172 | } |
173 | int loc = line. find ( ":" ); | 173 | int loc = line. find ( ":" ); |
174 | if ( loc != -1 ) | 174 | if ( loc != -1 ) |
175 | model = line. mid ( loc + 2 ). simplifyWhiteSpace( ); | 175 | model = line. mid ( loc + 2 ). simplifyWhiteSpace( ); |
176 | } | 176 | } |
177 | 177 | ||
178 | if ( model == "SHARP Corgi" ) { | 178 | if ( model == "SHARP Corgi" ) { |
179 | d->m_model = Model_Zaurus_SLC7x0; | 179 | d->m_model = Model_Zaurus_SLC7x0; |
180 | d->m_modelstr = "Zaurus SL-C700"; | 180 | d->m_modelstr = "Zaurus SL-C700"; |
181 | } else if ( model == "SHARP Shepherd" ) { | 181 | } else if ( model == "SHARP Shepherd" ) { |
182 | d->m_model = Model_Zaurus_SLC7x0; | 182 | d->m_model = Model_Zaurus_SLC7x0; |
183 | d->m_modelstr = "Zaurus SL-C750"; | 183 | d->m_modelstr = "Zaurus SL-C750"; |
184 | } else if ( model == "SHARP Husky" ) { | 184 | } else if ( model == "SHARP Husky" ) { |
185 | d->m_model = Model_Zaurus_SLC7x0; | 185 | d->m_model = Model_Zaurus_SLC7x0; |
186 | d->m_modelstr = "Zaurus SL-C760"; | 186 | d->m_modelstr = "Zaurus SL-C760"; |
187 | } else if ( model == "SHARP Poodle" ) { | 187 | } else if ( model == "SHARP Poodle" ) { |
188 | d->m_model = Model_Zaurus_SLB600; | 188 | d->m_model = Model_Zaurus_SLB600; |
189 | d->m_modelstr = "Zaurus SL-B500 or SL-5600"; | 189 | d->m_modelstr = "Zaurus SL-B500 or SL-5600"; |
190 | } else if ( model == "Sharp-Collie" || model == "Collie" ) { | 190 | } else if ( model == "Sharp-Collie" || model == "Collie" ) { |
191 | d->m_model = Model_Zaurus_SL5500; | 191 | d->m_model = Model_Zaurus_SL5500; |
192 | d->m_modelstr = "Zaurus SL-5500 or SL-5000d"; | 192 | d->m_modelstr = "Zaurus SL-5500 or SL-5000d"; |
193 | } else { | 193 | } else { |
194 | d->m_model = Model_Zaurus_SL5500; | 194 | d->m_model = Model_Zaurus_SL5500; |
195 | d->m_modelstr = "Zaurus (Model unknown)"; | 195 | d->m_modelstr = "Zaurus (Model unknown)"; |
196 | } | 196 | } |
197 | 197 | ||
198 | bool flipstate = false; | 198 | bool flipstate = false; |
199 | switch ( d->m_model ) { | 199 | switch ( d->m_model ) { |
200 | case Model_Zaurus_SLA300: | 200 | case Model_Zaurus_SLA300: |
201 | d->m_rotation = Rot0; | 201 | d->m_rotation = Rot0; |
202 | break; | 202 | break; |
203 | case Model_Zaurus_SLC7x0: | 203 | case Model_Zaurus_SLC7x0: |
204 | d->m_rotation = rotation(); | 204 | d->m_rotation = rotation(); |
205 | d->m_direction = direction(); | 205 | d->m_direction = direction(); |
206 | break; | 206 | break; |
207 | case Model_Zaurus_SLB600: | 207 | case Model_Zaurus_SLB600: |
208 | case Model_Zaurus_SL5500: | 208 | case Model_Zaurus_SL5500: |
209 | case Model_Zaurus_SL5000: | 209 | case Model_Zaurus_SL5000: |
210 | default: | 210 | default: |
211 | d->m_rotation = Rot270; | 211 | d->m_rotation = Rot270; |
212 | break; | 212 | break; |
213 | } | 213 | } |
214 | m_leds [0] = Led_Off; | 214 | m_leds [0] = Led_Off; |
215 | } | 215 | } |
216 | 216 | ||
217 | void Zaurus::initButtons() | 217 | void Zaurus::initButtons() |
218 | { | 218 | { |
219 | if ( d->m_buttons ) | 219 | if ( d->m_buttons ) |
220 | return; | 220 | return; |
221 | 221 | ||
222 | d->m_buttons = new QValueList <ODeviceButton>; | 222 | d->m_buttons = new QValueList <ODeviceButton>; |
223 | 223 | ||
224 | struct z_button * pz_buttons; | 224 | struct z_button * pz_buttons; |
225 | int buttoncount; | 225 | int buttoncount; |
226 | switch ( d->m_model ) { | 226 | switch ( d->m_model ) { |
227 | case Model_Zaurus_SLC7x0: | 227 | case Model_Zaurus_SLC7x0: |
228 | pz_buttons = z_buttons_c700; | 228 | pz_buttons = z_buttons_c700; |
229 | buttoncount = ARRAY_SIZE(z_buttons_c700); | 229 | buttoncount = ARRAY_SIZE(z_buttons_c700); |
230 | break; | 230 | break; |
231 | default: | 231 | default: |
232 | pz_buttons = z_buttons; | 232 | pz_buttons = z_buttons; |
233 | buttoncount = ARRAY_SIZE(z_buttons); | 233 | buttoncount = ARRAY_SIZE(z_buttons); |
234 | break; | 234 | break; |
235 | } | 235 | } |
236 | 236 | ||
237 | for ( int i = 0; i < buttoncount; i++ ) { | 237 | for ( int i = 0; i < buttoncount; i++ ) { |
238 | struct z_button *zb = pz_buttons + i; | 238 | struct z_button *zb = pz_buttons + i; |
239 | ODeviceButton b; | 239 | ODeviceButton b; |
240 | 240 | ||
241 | b. setKeycode ( zb->code ); | 241 | b. setKeycode ( zb->code ); |
242 | b. setUserText ( QObject::tr ( "Button", zb->utext )); | 242 | b. setUserText ( QObject::tr ( "Button", zb->utext )); |
243 | b. setPixmap ( Resource::loadPixmap ( zb->pix )); | 243 | b. setPixmap ( Resource::loadPixmap ( zb->pix )); |
244 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( zb->fpressedservice ), | 244 | b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( zb->fpressedservice ), |
245 | zb->fpressedaction )); | 245 | zb->fpressedaction )); |
246 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( zb->fheldservice ), | 246 | b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( zb->fheldservice ), |
247 | zb->fheldaction )); | 247 | zb->fheldaction )); |
248 | 248 | ||
249 | d->m_buttons->append ( b ); | 249 | d->m_buttons->append ( b ); |
250 | } | 250 | } |
251 | 251 | ||
252 | reloadButtonMapping(); | 252 | reloadButtonMapping(); |
253 | 253 | ||
254 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); | 254 | QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); |
255 | connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), | 255 | connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), |
256 | this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); | 256 | this, SLOT( systemMessage(const QCString&,const QByteArray&))); |
257 | } | 257 | } |
258 | 258 | ||
259 | #include <unistd.h> | 259 | #include <unistd.h> |
260 | #include <fcntl.h> | 260 | #include <fcntl.h> |
261 | #include <sys/ioctl.h> | 261 | #include <sys/ioctl.h> |
262 | 262 | ||
263 | //#include <asm/sharp_char.h> // including kernel headers is evil ... | 263 | //#include <asm/sharp_char.h> // including kernel headers is evil ... |
264 | 264 | ||
265 | #define SHARP_DEV_IOCTL_COMMAND_START 0x5680 | 265 | #define SHARP_DEV_IOCTL_COMMAND_START 0x5680 |
266 | 266 | ||
267 | #defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) | 267 | #defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) |
268 | #define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) | 268 | #define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) |
269 | 269 | ||
270 | #define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ | 270 | #define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ |
271 | #define SHARP_BUZ_KEYSOUND 2 /* key sound */ | 271 | #define SHARP_BUZ_KEYSOUND 2 /* key sound */ |
272 | #define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ | 272 | #define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ |
273 | 273 | ||
274 | /* --- for SHARP_BUZZER device --- */ | 274 | /* --- for SHARP_BUZZER device --- */ |
275 | 275 | ||
276 | //#defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) | 276 | //#defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) |
277 | //#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) | 277 | //#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) |
278 | 278 | ||
279 | #define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1) | 279 | #define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1) |
280 | #define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2) | 280 | #define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2) |
281 | #define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3) | 281 | #define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3) |
282 | #define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4) | 282 | #define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4) |
283 | #define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5) | 283 | #define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5) |
284 | 284 | ||
285 | //#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ | 285 | //#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ |
286 | //#define SHARP_BUZ_KEYSOUND 2 /* key sound */ | 286 | //#define SHARP_BUZ_KEYSOUND 2 /* key sound */ |
287 | 287 | ||
288 | //#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */ | 288 | //#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */ |
289 | //#define SHARP_PDA_WARNSOUND 4 /* warning occurred */ | 289 | //#define SHARP_PDA_WARNSOUND 4 /* warning occurred */ |
290 | //#define SHARP_PDA_ERRORSOUND 5 /* error occurred */ | 290 | //#define SHARP_PDA_ERRORSOUND 5 /* error occurred */ |
291 | //#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */ | 291 | //#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */ |
292 | //#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */ | 292 | //#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */ |
293 | //#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */ | 293 | //#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */ |
294 | //#define SHARP_PDA_APPSTART 9 /* application start */ | 294 | //#define SHARP_PDA_APPSTART 9 /* application start */ |
295 | //#define SHARP_PDA_APPQUIT 10 /* application ends */ | 295 | //#define SHARP_PDA_APPQUIT 10 /* application ends */ |
296 | 296 | ||
297 | //#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ | 297 | //#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ |
298 | //#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */ | 298 | //#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */ |
299 | //#define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */ | 299 | //#define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */ |
300 | //#define SHARP_BUZ_GOT_MAIL 14 /* mail sound */ | 300 | //#define SHARP_BUZ_GOT_MAIL 14 /* mail sound */ |
301 | // | 301 | // |
302 | 302 | ||
303 | #defineSHARP_LED_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) | 303 | #defineSHARP_LED_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) |
304 | #define SHARP_LED_SETSTATUS (SHARP_LED_IOCTL_START+1) | 304 | #define SHARP_LED_SETSTATUS (SHARP_LED_IOCTL_START+1) |
305 | 305 | ||
306 | #define SHARP_IOCTL_GET_ROTATION 0x413c | 306 | #define SHARP_IOCTL_GET_ROTATION 0x413c |
307 | 307 | ||
308 | typedef struct sharp_led_status { | 308 | typedef struct sharp_led_status { |
309 | int which; /* select which LED status is wanted. */ | 309 | int which; /* select which LED status is wanted. */ |
310 | int status; /* set new led status if you call SHARP_LED_SETSTATUS */ | 310 | int status; /* set new led status if you call SHARP_LED_SETSTATUS */ |
311 | } sharp_led_status; | 311 | } sharp_led_status; |
312 | 312 | ||
313 | #define SHARP_LED_MAIL_EXISTS 9 /* mail status (exists or not) */ | 313 | #define SHARP_LED_MAIL_EXISTS 9 /* mail status (exists or not) */ |
314 | 314 | ||
315 | #define LED_MAIL_NO_UNREAD_MAIL 0 /* for SHARP_LED_MAIL_EXISTS */ | 315 | #define LED_MAIL_NO_UNREAD_MAIL 0 /* for SHARP_LED_MAIL_EXISTS */ |
316 | #define LED_MAIL_NEWMAIL_EXISTS 1 /* for SHARP_LED_MAIL_EXISTS */ | 316 | #define LED_MAIL_NEWMAIL_EXISTS 1 /* for SHARP_LED_MAIL_EXISTS */ |
317 | #define LED_MAIL_UNREAD_MAIL_EX 2 /* for SHARP_LED_MAIL_EXISTS */ | 317 | #define LED_MAIL_UNREAD_MAIL_EX 2 /* for SHARP_LED_MAIL_EXISTS */ |
318 | 318 | ||
319 | // #include <asm/sharp_apm.h> // including kernel headers is evil ... | 319 | // #include <asm/sharp_apm.h> // including kernel headers is evil ... |
320 | 320 | ||
321 | #define APM_IOCGEVTSRC OD_IOR( 'A', 203, int ) | 321 | #define APM_IOCGEVTSRC OD_IOR( 'A', 203, int ) |
322 | #define APM_IOCSEVTSRC OD_IORW( 'A', 204, int ) | 322 | #define APM_IOCSEVTSRC OD_IORW( 'A', 204, int ) |
323 | #define APM_EVT_POWER_BUTTON (1 << 0) | 323 | #define APM_EVT_POWER_BUTTON (1 << 0) |
324 | 324 | ||
325 | #define FL_IOCTL_STEP_CONTRAST 100 | 325 | #define FL_IOCTL_STEP_CONTRAST 100 |
326 | 326 | ||
327 | 327 | ||
328 | void Zaurus::buzzer ( int sound ) | 328 | void Zaurus::buzzer ( int sound ) |
329 | { | 329 | { |
330 | #ifndef QT_NO_SOUND | 330 | #ifndef QT_NO_SOUND |
331 | QString soundname; | 331 | QString soundname; |
332 | 332 | ||
333 | // Not all devices have real sound | 333 | // Not all devices have real sound |
334 | if ( d->m_model == Model_Zaurus_SLC7x0 | 334 | if ( d->m_model == Model_Zaurus_SLC7x0 |
335 | || d->m_model == Model_Zaurus_SLB600 ){ | 335 | || d->m_model == Model_Zaurus_SLB600 ){ |
336 | 336 | ||
337 | switch ( sound ){ | 337 | switch ( sound ){ |
338 | case SHARP_BUZ_SCHEDULE_ALARM: | 338 | case SHARP_BUZ_SCHEDULE_ALARM: |
339 | soundname = "alarm"; | 339 | soundname = "alarm"; |
340 | break; | 340 | break; |
341 | case SHARP_BUZ_TOUCHSOUND: | 341 | case SHARP_BUZ_TOUCHSOUND: |
342 | soundname = "touchsound"; | 342 | soundname = "touchsound"; |
343 | break; | 343 | break; |
344 | case SHARP_BUZ_KEYSOUND: | 344 | case SHARP_BUZ_KEYSOUND: |
345 | soundname = "keysound"; | 345 | soundname = "keysound"; |
346 | break; | 346 | break; |
347 | default: | 347 | default: |
348 | soundname = "alarm"; | 348 | soundname = "alarm"; |
349 | 349 | ||
350 | } | 350 | } |
351 | } | 351 | } |
352 | 352 | ||
diff --git a/libopie2/opiecore/oprocess.cpp b/libopie2/opiecore/oprocess.cpp index 0a361a1..6349c83 100644 --- a/libopie2/opiecore/oprocess.cpp +++ b/libopie2/opiecore/oprocess.cpp | |||
@@ -579,214 +579,214 @@ void OProcess::slotSendData( int ) | |||
579 | void OProcess::processHasExited( int state ) | 579 | void OProcess::processHasExited( int state ) |
580 | { | 580 | { |
581 | if ( runs ) | 581 | if ( runs ) |
582 | { | 582 | { |
583 | runs = false; | 583 | runs = false; |
584 | status = state; | 584 | status = state; |
585 | 585 | ||
586 | commClose(); // cleanup communication sockets | 586 | commClose(); // cleanup communication sockets |
587 | 587 | ||
588 | // also emit a signal if the process was run Blocking | 588 | // also emit a signal if the process was run Blocking |
589 | if ( DontCare != run_mode ) | 589 | if ( DontCare != run_mode ) |
590 | { | 590 | { |
591 | emit processExited( this ); | 591 | emit processExited( this ); |
592 | } | 592 | } |
593 | } | 593 | } |
594 | } | 594 | } |
595 | 595 | ||
596 | int OProcess::childOutput( int fdno ) | 596 | int OProcess::childOutput( int fdno ) |
597 | { | 597 | { |
598 | if ( communication & NoRead ) | 598 | if ( communication & NoRead ) |
599 | { | 599 | { |
600 | int len = -1; | 600 | int len = -1; |
601 | emit receivedStdout( fdno, len ); | 601 | emit receivedStdout( fdno, len ); |
602 | errno = 0; // Make sure errno doesn't read "EAGAIN" | 602 | errno = 0; // Make sure errno doesn't read "EAGAIN" |
603 | return len; | 603 | return len; |
604 | } | 604 | } |
605 | else | 605 | else |
606 | { | 606 | { |
607 | char buffer[ 1024 ]; | 607 | char buffer[ 1024 ]; |
608 | int len; | 608 | int len; |
609 | 609 | ||
610 | len = ::read( fdno, buffer, 1024 ); | 610 | len = ::read( fdno, buffer, 1024 ); |
611 | 611 | ||
612 | if ( 0 < len ) | 612 | if ( 0 < len ) |
613 | { | 613 | { |
614 | emit receivedStdout( this, buffer, len ); | 614 | emit receivedStdout( this, buffer, len ); |
615 | } | 615 | } |
616 | return len; | 616 | return len; |
617 | } | 617 | } |
618 | } | 618 | } |
619 | 619 | ||
620 | int OProcess::childError( int fdno ) | 620 | int OProcess::childError( int fdno ) |
621 | { | 621 | { |
622 | char buffer[ 1024 ]; | 622 | char buffer[ 1024 ]; |
623 | int len; | 623 | int len; |
624 | 624 | ||
625 | len = ::read( fdno, buffer, 1024 ); | 625 | len = ::read( fdno, buffer, 1024 ); |
626 | 626 | ||
627 | if ( 0 < len ) | 627 | if ( 0 < len ) |
628 | emit receivedStderr( this, buffer, len ); | 628 | emit receivedStderr( this, buffer, len ); |
629 | return len; | 629 | return len; |
630 | } | 630 | } |
631 | 631 | ||
632 | int OProcess::setupCommunication( Communication comm ) | 632 | int OProcess::setupCommunication( Communication comm ) |
633 | { | 633 | { |
634 | int ok; | 634 | int ok; |
635 | 635 | ||
636 | communication = comm; | 636 | communication = comm; |
637 | 637 | ||
638 | ok = 1; | 638 | ok = 1; |
639 | if ( comm & Stdin ) | 639 | if ( comm & Stdin ) |
640 | ok &= socketpair( AF_UNIX, SOCK_STREAM, 0, in ) >= 0; | 640 | ok &= socketpair( AF_UNIX, SOCK_STREAM, 0, in ) >= 0; |
641 | 641 | ||
642 | if ( comm & Stdout ) | 642 | if ( comm & Stdout ) |
643 | ok &= socketpair( AF_UNIX, SOCK_STREAM, 0, out ) >= 0; | 643 | ok &= socketpair( AF_UNIX, SOCK_STREAM, 0, out ) >= 0; |
644 | 644 | ||
645 | if ( comm & Stderr ) | 645 | if ( comm & Stderr ) |
646 | ok &= socketpair( AF_UNIX, SOCK_STREAM, 0, err ) >= 0; | 646 | ok &= socketpair( AF_UNIX, SOCK_STREAM, 0, err ) >= 0; |
647 | 647 | ||
648 | return ok; | 648 | return ok; |
649 | } | 649 | } |
650 | 650 | ||
651 | int OProcess::commSetupDoneP() | 651 | int OProcess::commSetupDoneP() |
652 | { | 652 | { |
653 | int ok = 1; | 653 | int ok = 1; |
654 | 654 | ||
655 | if ( communication != NoCommunication ) | 655 | if ( communication != NoCommunication ) |
656 | { | 656 | { |
657 | if ( communication & Stdin ) | 657 | if ( communication & Stdin ) |
658 | close( in[ 0 ] ); | 658 | close( in[ 0 ] ); |
659 | if ( communication & Stdout ) | 659 | if ( communication & Stdout ) |
660 | close( out[ 1 ] ); | 660 | close( out[ 1 ] ); |
661 | if ( communication & Stderr ) | 661 | if ( communication & Stderr ) |
662 | close( err[ 1 ] ); | 662 | close( err[ 1 ] ); |
663 | 663 | ||
664 | // Don't create socket notifiers and set the sockets non-blocking if | 664 | // Don't create socket notifiers and set the sockets non-blocking if |
665 | // blocking is requested. | 665 | // blocking is requested. |
666 | if ( run_mode == Block ) | 666 | if ( run_mode == Block ) |
667 | return ok; | 667 | return ok; |
668 | 668 | ||
669 | if ( communication & Stdin ) | 669 | if ( communication & Stdin ) |
670 | { | 670 | { |
671 | // ok &= (-1 != fcntl(in[1], F_SETFL, O_NONBLOCK)); | 671 | // ok &= (-1 != fcntl(in[1], F_SETFL, O_NONBLOCK)); |
672 | innot = new QSocketNotifier( in[ 1 ], QSocketNotifier::Write, this ); | 672 | innot = new QSocketNotifier( in[ 1 ], QSocketNotifier::Write, this ); |
673 | CHECK_PTR( innot ); | 673 | CHECK_PTR( innot ); |
674 | innot->setEnabled( false ); // will be enabled when data has to be sent | 674 | innot->setEnabled( false ); // will be enabled when data has to be sent |
675 | QObject::connect( innot, SIGNAL( activated( int ) ), | 675 | QObject::connect( innot, SIGNAL( activated(int) ), |
676 | this, SLOT( slotSendData( int ) ) ); | 676 | this, SLOT( slotSendData(int) ) ); |
677 | } | 677 | } |
678 | 678 | ||
679 | if ( communication & Stdout ) | 679 | if ( communication & Stdout ) |
680 | { | 680 | { |
681 | // ok &= (-1 != fcntl(out[0], F_SETFL, O_NONBLOCK)); | 681 | // ok &= (-1 != fcntl(out[0], F_SETFL, O_NONBLOCK)); |
682 | outnot = new QSocketNotifier( out[ 0 ], QSocketNotifier::Read, this ); | 682 | outnot = new QSocketNotifier( out[ 0 ], QSocketNotifier::Read, this ); |
683 | CHECK_PTR( outnot ); | 683 | CHECK_PTR( outnot ); |
684 | QObject::connect( outnot, SIGNAL( activated( int ) ), | 684 | QObject::connect( outnot, SIGNAL( activated(int) ), |
685 | this, SLOT( slotChildOutput( int ) ) ); | 685 | this, SLOT( slotChildOutput(int) ) ); |
686 | if ( communication & NoRead ) | 686 | if ( communication & NoRead ) |
687 | suspend(); | 687 | suspend(); |
688 | } | 688 | } |
689 | 689 | ||
690 | if ( communication & Stderr ) | 690 | if ( communication & Stderr ) |
691 | { | 691 | { |
692 | // ok &= (-1 != fcntl(err[0], F_SETFL, O_NONBLOCK)); | 692 | // ok &= (-1 != fcntl(err[0], F_SETFL, O_NONBLOCK)); |
693 | errnot = new QSocketNotifier( err[ 0 ], QSocketNotifier::Read, this ); | 693 | errnot = new QSocketNotifier( err[ 0 ], QSocketNotifier::Read, this ); |
694 | CHECK_PTR( errnot ); | 694 | CHECK_PTR( errnot ); |
695 | QObject::connect( errnot, SIGNAL( activated( int ) ), | 695 | QObject::connect( errnot, SIGNAL( activated(int) ), |
696 | this, SLOT( slotChildError( int ) ) ); | 696 | this, SLOT( slotChildError(int) ) ); |
697 | } | 697 | } |
698 | } | 698 | } |
699 | return ok; | 699 | return ok; |
700 | } | 700 | } |
701 | 701 | ||
702 | int OProcess::commSetupDoneC() | 702 | int OProcess::commSetupDoneC() |
703 | { | 703 | { |
704 | int ok = 1; | 704 | int ok = 1; |
705 | struct linger so; | 705 | struct linger so; |
706 | memset( &so, 0, sizeof( so ) ); | 706 | memset( &so, 0, sizeof( so ) ); |
707 | 707 | ||
708 | if ( communication & Stdin ) | 708 | if ( communication & Stdin ) |
709 | close( in[ 1 ] ); | 709 | close( in[ 1 ] ); |
710 | if ( communication & Stdout ) | 710 | if ( communication & Stdout ) |
711 | close( out[ 0 ] ); | 711 | close( out[ 0 ] ); |
712 | if ( communication & Stderr ) | 712 | if ( communication & Stderr ) |
713 | close( err[ 0 ] ); | 713 | close( err[ 0 ] ); |
714 | 714 | ||
715 | if ( communication & Stdin ) | 715 | if ( communication & Stdin ) |
716 | ok &= dup2( in[ 0 ], STDIN_FILENO ) != -1; | 716 | ok &= dup2( in[ 0 ], STDIN_FILENO ) != -1; |
717 | else | 717 | else |
718 | { | 718 | { |
719 | int null_fd = open( "/dev/null", O_RDONLY ); | 719 | int null_fd = open( "/dev/null", O_RDONLY ); |
720 | ok &= dup2( null_fd, STDIN_FILENO ) != -1; | 720 | ok &= dup2( null_fd, STDIN_FILENO ) != -1; |
721 | close( null_fd ); | 721 | close( null_fd ); |
722 | } | 722 | } |
723 | if ( communication & Stdout ) | 723 | if ( communication & Stdout ) |
724 | { | 724 | { |
725 | ok &= dup2( out[ 1 ], STDOUT_FILENO ) != -1; | 725 | ok &= dup2( out[ 1 ], STDOUT_FILENO ) != -1; |
726 | ok &= !setsockopt( out[ 1 ], SOL_SOCKET, SO_LINGER, ( char* ) & so, sizeof( so ) ); | 726 | ok &= !setsockopt( out[ 1 ], SOL_SOCKET, SO_LINGER, ( char* ) & so, sizeof( so ) ); |
727 | } | 727 | } |
728 | else | 728 | else |
729 | { | 729 | { |
730 | int null_fd = open( "/dev/null", O_WRONLY ); | 730 | int null_fd = open( "/dev/null", O_WRONLY ); |
731 | ok &= dup2( null_fd, STDOUT_FILENO ) != -1; | 731 | ok &= dup2( null_fd, STDOUT_FILENO ) != -1; |
732 | close( null_fd ); | 732 | close( null_fd ); |
733 | } | 733 | } |
734 | if ( communication & Stderr ) | 734 | if ( communication & Stderr ) |
735 | { | 735 | { |
736 | ok &= dup2( err[ 1 ], STDERR_FILENO ) != -1; | 736 | ok &= dup2( err[ 1 ], STDERR_FILENO ) != -1; |
737 | ok &= !setsockopt( err[ 1 ], SOL_SOCKET, SO_LINGER, reinterpret_cast<char *>( &so ), sizeof( so ) ); | 737 | ok &= !setsockopt( err[ 1 ], SOL_SOCKET, SO_LINGER, reinterpret_cast<char *>( &so ), sizeof( so ) ); |
738 | } | 738 | } |
739 | else | 739 | else |
740 | { | 740 | { |
741 | int null_fd = open( "/dev/null", O_WRONLY ); | 741 | int null_fd = open( "/dev/null", O_WRONLY ); |
742 | ok &= dup2( null_fd, STDERR_FILENO ) != -1; | 742 | ok &= dup2( null_fd, STDERR_FILENO ) != -1; |
743 | close( null_fd ); | 743 | close( null_fd ); |
744 | } | 744 | } |
745 | return ok; | 745 | return ok; |
746 | } | 746 | } |
747 | 747 | ||
748 | void OProcess::commClose() | 748 | void OProcess::commClose() |
749 | { | 749 | { |
750 | if ( NoCommunication != communication ) | 750 | if ( NoCommunication != communication ) |
751 | { | 751 | { |
752 | bool b_in = ( communication & Stdin ); | 752 | bool b_in = ( communication & Stdin ); |
753 | bool b_out = ( communication & Stdout ); | 753 | bool b_out = ( communication & Stdout ); |
754 | bool b_err = ( communication & Stderr ); | 754 | bool b_err = ( communication & Stderr ); |
755 | if ( b_in ) | 755 | if ( b_in ) |
756 | delete innot; | 756 | delete innot; |
757 | 757 | ||
758 | if ( b_out || b_err ) | 758 | if ( b_out || b_err ) |
759 | { | 759 | { |
760 | // If both channels are being read we need to make sure that one socket buffer | 760 | // If both channels are being read we need to make sure that one socket buffer |
761 | // doesn't fill up whilst we are waiting for data on the other (causing a deadlock). | 761 | // doesn't fill up whilst we are waiting for data on the other (causing a deadlock). |
762 | // Hence we need to use select. | 762 | // Hence we need to use select. |
763 | 763 | ||
764 | // Once one or other of the channels has reached EOF (or given an error) go back | 764 | // Once one or other of the channels has reached EOF (or given an error) go back |
765 | // to the usual mechanism. | 765 | // to the usual mechanism. |
766 | 766 | ||
767 | int fds_ready = 1; | 767 | int fds_ready = 1; |
768 | fd_set rfds; | 768 | fd_set rfds; |
769 | 769 | ||
770 | int max_fd = 0; | 770 | int max_fd = 0; |
771 | if ( b_out ) | 771 | if ( b_out ) |
772 | { | 772 | { |
773 | fcntl( out[ 0 ], F_SETFL, O_NONBLOCK ); | 773 | fcntl( out[ 0 ], F_SETFL, O_NONBLOCK ); |
774 | if ( out[ 0 ] > max_fd ) | 774 | if ( out[ 0 ] > max_fd ) |
775 | max_fd = out[ 0 ]; | 775 | max_fd = out[ 0 ]; |
776 | delete outnot; | 776 | delete outnot; |
777 | outnot = 0; | 777 | outnot = 0; |
778 | } | 778 | } |
779 | if ( b_err ) | 779 | if ( b_err ) |
780 | { | 780 | { |
781 | fcntl( err[ 0 ], F_SETFL, O_NONBLOCK ); | 781 | fcntl( err[ 0 ], F_SETFL, O_NONBLOCK ); |
782 | if ( err[ 0 ] > max_fd ) | 782 | if ( err[ 0 ] > max_fd ) |
783 | max_fd = err[ 0 ]; | 783 | max_fd = err[ 0 ]; |
784 | delete errnot; | 784 | delete errnot; |
785 | errnot = 0; | 785 | errnot = 0; |
786 | } | 786 | } |
787 | 787 | ||
788 | 788 | ||
789 | while ( b_out || b_err ) | 789 | while ( b_out || b_err ) |
790 | { | 790 | { |
791 | // * If the process is still running we block until we | 791 | // * If the process is still running we block until we |
792 | // receive data. (p_timeout = 0, no timeout) | 792 | // receive data. (p_timeout = 0, no timeout) |
diff --git a/libopie2/opiepim/core/ocontactaccess.cpp b/libopie2/opiepim/core/ocontactaccess.cpp index c12e138..4f9b504 100644 --- a/libopie2/opiepim/core/ocontactaccess.cpp +++ b/libopie2/opiepim/core/ocontactaccess.cpp | |||
@@ -1,152 +1,152 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) The Main Author <main-author@whereever.org> | 3 | Copyright (C) The Main Author <main-author@whereever.org> |
4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> | 4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; either version 2 of the License, |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | /* | 29 | /* |
30 | * ===================================================================== | 30 | * ===================================================================== |
31 | * ToDo: XML-Backend: Automatic reload if something was changed... | 31 | * ToDo: XML-Backend: Automatic reload if something was changed... |
32 | * | 32 | * |
33 | * | 33 | * |
34 | */ | 34 | */ |
35 | 35 | ||
36 | #include "ocontactaccess.h" | 36 | #include "ocontactaccess.h" |
37 | #include "obackendfactory.h" | 37 | #include "obackendfactory.h" |
38 | 38 | ||
39 | #include <qasciidict.h> | 39 | #include <qasciidict.h> |
40 | #include <qdatetime.h> | 40 | #include <qdatetime.h> |
41 | #include <qfile.h> | 41 | #include <qfile.h> |
42 | #include <qregexp.h> | 42 | #include <qregexp.h> |
43 | #include <qlist.h> | 43 | #include <qlist.h> |
44 | #include <qcopchannel_qws.h> | 44 | #include <qcopchannel_qws.h> |
45 | 45 | ||
46 | //#include <qpe/qcopenvelope_qws.h> | 46 | //#include <qpe/qcopenvelope_qws.h> |
47 | #include <qpe/global.h> | 47 | #include <qpe/global.h> |
48 | 48 | ||
49 | #include <errno.h> | 49 | #include <errno.h> |
50 | #include <fcntl.h> | 50 | #include <fcntl.h> |
51 | #include <unistd.h> | 51 | #include <unistd.h> |
52 | #include <stdlib.h> | 52 | #include <stdlib.h> |
53 | 53 | ||
54 | #include <opie2/ocontactaccessbackend_xml.h> | 54 | #include <opie2/ocontactaccessbackend_xml.h> |
55 | 55 | ||
56 | namespace Opie { | 56 | namespace Opie { |
57 | 57 | ||
58 | OPimContactAccess::OPimContactAccess ( const QString appname, const QString , | 58 | OPimContactAccess::OPimContactAccess ( const QString appname, const QString , |
59 | OPimContactAccessBackend* end, bool autosync ): | 59 | OPimContactAccessBackend* end, bool autosync ): |
60 | OPimAccessTemplate<OPimContact>( end ) | 60 | OPimAccessTemplate<OPimContact>( end ) |
61 | { | 61 | { |
62 | /* take care of the backend. If there is no one defined, we | 62 | /* take care of the backend. If there is no one defined, we |
63 | * will use the XML-Backend as default (until we have a cute SQL-Backend..). | 63 | * will use the XML-Backend as default (until we have a cute SQL-Backend..). |
64 | */ | 64 | */ |
65 | if( end == 0 ) { | 65 | if( end == 0 ) { |
66 | qWarning ("Using BackendFactory !"); | 66 | qWarning ("Using BackendFactory !"); |
67 | end = OBackendFactory<OPimContactAccessBackend>::Default( "contact", appname ); | 67 | end = OBackendFactory<OPimContactAccessBackend>::Default( "contact", appname ); |
68 | } | 68 | } |
69 | // Set backend locally and in template | 69 | // Set backend locally and in template |
70 | m_backEnd = end; | 70 | m_backEnd = end; |
71 | OPimAccessTemplate<OPimContact>::setBackEnd (end); | 71 | OPimAccessTemplate<OPimContact>::setBackEnd (end); |
72 | 72 | ||
73 | 73 | ||
74 | /* Connect signal of external db change to function */ | 74 | /* Connect signal of external db change to function */ |
75 | QCopChannel *dbchannel = new QCopChannel( "QPE/PIM", this ); | 75 | QCopChannel *dbchannel = new QCopChannel( "QPE/PIM", this ); |
76 | connect( dbchannel, SIGNAL(received(const QCString &, const QByteArray &)), | 76 | connect( dbchannel, SIGNAL(received(const QCString&,const QByteArray&)), |
77 | this, SLOT(copMessage( const QCString &, const QByteArray &)) ); | 77 | this, SLOT(copMessage(const QCString&,const QByteArray&)) ); |
78 | if ( autosync ){ | 78 | if ( autosync ){ |
79 | QCopChannel *syncchannel = new QCopChannel( "QPE/Sync", this ); | 79 | QCopChannel *syncchannel = new QCopChannel( "QPE/Sync", this ); |
80 | connect( syncchannel, SIGNAL(received(const QCString &, const QByteArray &)), | 80 | connect( syncchannel, SIGNAL(received(const QCString&,const QByteArray&)), |
81 | this, SLOT(copMessage( const QCString &, const QByteArray &)) ); | 81 | this, SLOT(copMessage(const QCString&,const QByteArray&)) ); |
82 | } | 82 | } |
83 | 83 | ||
84 | 84 | ||
85 | } | 85 | } |
86 | OPimContactAccess::~OPimContactAccess () | 86 | OPimContactAccess::~OPimContactAccess () |
87 | { | 87 | { |
88 | /* The user may forget to save the changed database, therefore try to | 88 | /* The user may forget to save the changed database, therefore try to |
89 | * do it for him.. | 89 | * do it for him.. |
90 | */ | 90 | */ |
91 | save(); | 91 | save(); |
92 | // delete m_backEnd; is done by template.. | 92 | // delete m_backEnd; is done by template.. |
93 | } | 93 | } |
94 | 94 | ||
95 | 95 | ||
96 | bool OPimContactAccess::save () | 96 | bool OPimContactAccess::save () |
97 | { | 97 | { |
98 | /* If the database was changed externally, we could not save the | 98 | /* If the database was changed externally, we could not save the |
99 | * Data. This will remove added items which is unacceptable ! | 99 | * Data. This will remove added items which is unacceptable ! |
100 | * Therefore: Reload database and merge the data... | 100 | * Therefore: Reload database and merge the data... |
101 | */ | 101 | */ |
102 | if ( OPimAccessTemplate<OPimContact>::wasChangedExternally() ) | 102 | if ( OPimAccessTemplate<OPimContact>::wasChangedExternally() ) |
103 | reload(); | 103 | reload(); |
104 | 104 | ||
105 | bool status = OPimAccessTemplate<OPimContact>::save(); | 105 | bool status = OPimAccessTemplate<OPimContact>::save(); |
106 | if ( !status ) return false; | 106 | if ( !status ) return false; |
107 | 107 | ||
108 | /* Now tell everyone that new data is available. | 108 | /* Now tell everyone that new data is available. |
109 | */ | 109 | */ |
110 | QCopEnvelope e( "QPE/PIM", "addressbookUpdated()" ); | 110 | QCopEnvelope e( "QPE/PIM", "addressbookUpdated()" ); |
111 | 111 | ||
112 | return true; | 112 | return true; |
113 | } | 113 | } |
114 | 114 | ||
115 | const uint OPimContactAccess::querySettings() | 115 | const uint OPimContactAccess::querySettings() |
116 | { | 116 | { |
117 | return ( m_backEnd->querySettings() ); | 117 | return ( m_backEnd->querySettings() ); |
118 | } | 118 | } |
119 | 119 | ||
120 | bool OPimContactAccess::hasQuerySettings ( int querySettings ) const | 120 | bool OPimContactAccess::hasQuerySettings ( int querySettings ) const |
121 | { | 121 | { |
122 | return ( m_backEnd->hasQuerySettings ( querySettings ) ); | 122 | return ( m_backEnd->hasQuerySettings ( querySettings ) ); |
123 | } | 123 | } |
124 | OPimRecordList<OPimContact> OPimContactAccess::sorted( bool ascending, int sortOrder, int sortFilter, int cat ) const | 124 | OPimRecordList<OPimContact> OPimContactAccess::sorted( bool ascending, int sortOrder, int sortFilter, int cat ) const |
125 | { | 125 | { |
126 | QArray<int> matchingContacts = m_backEnd -> sorted( ascending, sortOrder, sortFilter, cat ); | 126 | QArray<int> matchingContacts = m_backEnd -> sorted( ascending, sortOrder, sortFilter, cat ); |
127 | return ( OPimRecordList<OPimContact>(matchingContacts, this) ); | 127 | return ( OPimRecordList<OPimContact>(matchingContacts, this) ); |
128 | } | 128 | } |
129 | 129 | ||
130 | 130 | ||
131 | bool OPimContactAccess::wasChangedExternally()const | 131 | bool OPimContactAccess::wasChangedExternally()const |
132 | { | 132 | { |
133 | return ( m_backEnd->wasChangedExternally() ); | 133 | return ( m_backEnd->wasChangedExternally() ); |
134 | } | 134 | } |
135 | 135 | ||
136 | 136 | ||
137 | void OPimContactAccess::copMessage( const QCString &msg, const QByteArray & ) | 137 | void OPimContactAccess::copMessage( const QCString &msg, const QByteArray & ) |
138 | { | 138 | { |
139 | if ( msg == "addressbookUpdated()" ){ | 139 | if ( msg == "addressbookUpdated()" ){ |
140 | qWarning ("OPimContactAccess: Received addressbokUpdated()"); | 140 | qWarning ("OPimContactAccess: Received addressbokUpdated()"); |
141 | emit signalChanged ( this ); | 141 | emit signalChanged ( this ); |
142 | } else if ( msg == "flush()" ) { | 142 | } else if ( msg == "flush()" ) { |
143 | qWarning ("OPimContactAccess: Received flush()"); | 143 | qWarning ("OPimContactAccess: Received flush()"); |
144 | save (); | 144 | save (); |
145 | } else if ( msg == "reload()" ) { | 145 | } else if ( msg == "reload()" ) { |
146 | qWarning ("OPimContactAccess: Received reload()"); | 146 | qWarning ("OPimContactAccess: Received reload()"); |
147 | reload (); | 147 | reload (); |
148 | emit signalChanged ( this ); | 148 | emit signalChanged ( this ); |
149 | } | 149 | } |
150 | } | 150 | } |
151 | 151 | ||
152 | } | 152 | } |
diff --git a/libopie2/opiepim/ui/opimmainwindow.cpp b/libopie2/opiepim/ui/opimmainwindow.cpp index 10ed743..40dc297 100644 --- a/libopie2/opiepim/ui/opimmainwindow.cpp +++ b/libopie2/opiepim/ui/opimmainwindow.cpp | |||
@@ -1,149 +1,149 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de) | 3 | Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de) |
4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> | 4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
8 | .> <`_, > . <= redistribute it and/or modify it under | 8 | .> <`_, > . <= redistribute it and/or modify it under |
9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 9 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
10 | .="- .-=="i, .._ License as published by the Free Software | 10 | .="- .-=="i, .._ License as published by the Free Software |
11 | - . .-<_> .<> Foundation; either version 2 of the License, | 11 | - . .-<_> .<> Foundation; either version 2 of the License, |
12 | ._= =} : or (at your option) any later version. | 12 | ._= =} : or (at your option) any later version. |
13 | .%`+i> _;_. | 13 | .%`+i> _;_. |
14 | .i_,=:_. -<s. This program is distributed in the hope that | 14 | .i_,=:_. -<s. This program is distributed in the hope that |
15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 15 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
16 | : .. .:, . . . without even the implied warranty of | 16 | : .. .:, . . . without even the implied warranty of |
17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 17 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 18 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
19 | ..}^=.= = ; Library General Public License for more | 19 | ..}^=.= = ; Library General Public License for more |
20 | ++= -. .` .: details. | 20 | ++= -. .` .: details. |
21 | : = ...= . :.=- | 21 | : = ...= . :.=- |
22 | -. .:....=;==+<; You should have received a copy of the GNU | 22 | -. .:....=;==+<; You should have received a copy of the GNU |
23 | -_. . . )=. = Library General Public License along with | 23 | -_. . . )=. = Library General Public License along with |
24 | -- :-=` this library; see the file COPYING.LIB. | 24 | -- :-=` this library; see the file COPYING.LIB. |
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #include <qapplication.h> | 29 | #include <qapplication.h> |
30 | #include <qdatetime.h> | 30 | #include <qdatetime.h> |
31 | #include <qcopchannel_qws.h> | 31 | #include <qcopchannel_qws.h> |
32 | 32 | ||
33 | #include <qpe/sound.h> | 33 | #include <qpe/sound.h> |
34 | #include <qpe/qcopenvelope_qws.h> | 34 | #include <qpe/qcopenvelope_qws.h> |
35 | #include <qpe/qpeapplication.h> | 35 | #include <qpe/qpeapplication.h> |
36 | 36 | ||
37 | #include <opie2/opimresolver.h> | 37 | #include <opie2/opimresolver.h> |
38 | #include "opimmainwindow.h" | 38 | #include "opimmainwindow.h" |
39 | 39 | ||
40 | namespace Opie { | 40 | namespace Opie { |
41 | OPimMainWindow::OPimMainWindow( const QString& service, QWidget* parent, | 41 | OPimMainWindow::OPimMainWindow( const QString& service, QWidget* parent, |
42 | const char* name, WFlags flag ) | 42 | const char* name, WFlags flag ) |
43 | : QMainWindow( parent, name, flag ), m_rtti(-1), m_service( service ), m_fallBack(0l) { | 43 | : QMainWindow( parent, name, flag ), m_rtti(-1), m_service( service ), m_fallBack(0l) { |
44 | 44 | ||
45 | /* | 45 | /* |
46 | * let's generate our QCopChannel | 46 | * let's generate our QCopChannel |
47 | */ | 47 | */ |
48 | m_str = QString("QPE/"+m_service).local8Bit(); | 48 | m_str = QString("QPE/"+m_service).local8Bit(); |
49 | m_channel= new QCopChannel(m_str, this ); | 49 | m_channel= new QCopChannel(m_str, this ); |
50 | connect(m_channel, SIGNAL(received(const QCString&, const QByteArray& ) ), | 50 | connect(m_channel, SIGNAL(received(const QCString&,const QByteArray&) ), |
51 | this, SLOT( appMessage( const QCString&, const QByteArray& ) ) ); | 51 | this, SLOT( appMessage(const QCString&,const QByteArray&) ) ); |
52 | connect(qApp, SIGNAL(appMessage(const QCString&, const QByteArray& ) ), | 52 | connect(qApp, SIGNAL(appMessage(const QCString&,const QByteArray&) ), |
53 | this, SLOT( appMessage( const QCString&, const QByteArray& ) ) ); | 53 | this, SLOT( appMessage(const QCString&,const QByteArray&) ) ); |
54 | 54 | ||
55 | /* connect flush and reload */ | 55 | /* connect flush and reload */ |
56 | connect(qApp, SIGNAL(flush() ), | 56 | connect(qApp, SIGNAL(flush() ), |
57 | this, SLOT(flush() ) ); | 57 | this, SLOT(flush() ) ); |
58 | connect(qApp, SIGNAL(reload() ), | 58 | connect(qApp, SIGNAL(reload() ), |
59 | this, SLOT(reload() ) ); | 59 | this, SLOT(reload() ) ); |
60 | } | 60 | } |
61 | OPimMainWindow::~OPimMainWindow() { | 61 | OPimMainWindow::~OPimMainWindow() { |
62 | delete m_channel; | 62 | delete m_channel; |
63 | } | 63 | } |
64 | QCopChannel* OPimMainWindow::channel() { | 64 | QCopChannel* OPimMainWindow::channel() { |
65 | return m_channel; | 65 | return m_channel; |
66 | } | 66 | } |
67 | void OPimMainWindow::doSetDocument( const QString& ) { | 67 | void OPimMainWindow::doSetDocument( const QString& ) { |
68 | 68 | ||
69 | } | 69 | } |
70 | void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) { | 70 | void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) { |
71 | bool needShow = false; | 71 | bool needShow = false; |
72 | /* | 72 | /* |
73 | * create demands to create | 73 | * create demands to create |
74 | * a new record... | 74 | * a new record... |
75 | */ | 75 | */ |
76 | QDataStream stream(array, IO_ReadOnly); | 76 | QDataStream stream(array, IO_ReadOnly); |
77 | if ( cmd == "create()" ) { | 77 | if ( cmd == "create()" ) { |
78 | raise(); | 78 | raise(); |
79 | int uid = create(); | 79 | int uid = create(); |
80 | QCopEnvelope e(m_str, "created(int)" ); | 80 | QCopEnvelope e(m_str, "created(int)" ); |
81 | e << uid; | 81 | e << uid; |
82 | needShow = true; | 82 | needShow = true; |
83 | }else if ( cmd == "remove(int)" ) { | 83 | }else if ( cmd == "remove(int)" ) { |
84 | int uid; | 84 | int uid; |
85 | stream >> uid; | 85 | stream >> uid; |
86 | bool rem = remove( uid ); | 86 | bool rem = remove( uid ); |
87 | QCopEnvelope e(m_str, "removed(bool)" ); | 87 | QCopEnvelope e(m_str, "removed(bool)" ); |
88 | e << rem; | 88 | e << rem; |
89 | needShow = true; | 89 | needShow = true; |
90 | }else if ( cmd == "beam(int)" ) { | 90 | }else if ( cmd == "beam(int)" ) { |
91 | int uid; | 91 | int uid; |
92 | stream >> uid; | 92 | stream >> uid; |
93 | beam( uid); | 93 | beam( uid); |
94 | }else if ( cmd == "show(int)" ) { | 94 | }else if ( cmd == "show(int)" ) { |
95 | raise(); | 95 | raise(); |
96 | int uid; | 96 | int uid; |
97 | stream >> uid; | 97 | stream >> uid; |
98 | show( uid ); | 98 | show( uid ); |
99 | needShow = true; | 99 | needShow = true; |
100 | }else if ( cmd == "edit(int)" ) { | 100 | }else if ( cmd == "edit(int)" ) { |
101 | raise(); | 101 | raise(); |
102 | int uid; | 102 | int uid; |
103 | stream >> uid; | 103 | stream >> uid; |
104 | edit( uid ); | 104 | edit( uid ); |
105 | }else if ( cmd == "add(int,QByteArray)" ) { | 105 | }else if ( cmd == "add(int,QByteArray)" ) { |
106 | int rtti; | 106 | int rtti; |
107 | QByteArray array; | 107 | QByteArray array; |
108 | stream >> rtti; | 108 | stream >> rtti; |
109 | stream >> array; | 109 | stream >> array; |
110 | m_fallBack = record(rtti, array ); | 110 | m_fallBack = record(rtti, array ); |
111 | if (!m_fallBack) return; | 111 | if (!m_fallBack) return; |
112 | add( *m_fallBack ); | 112 | add( *m_fallBack ); |
113 | delete m_fallBack; | 113 | delete m_fallBack; |
114 | }else if ( cmd == "alarm(QDateTime,int)" ) { | 114 | }else if ( cmd == "alarm(QDateTime,int)" ) { |
115 | raise(); | 115 | raise(); |
116 | QDateTime dt; int uid; | 116 | QDateTime dt; int uid; |
117 | stream >> dt; | 117 | stream >> dt; |
118 | stream >> uid; | 118 | stream >> uid; |
119 | qWarning(" Date: %s Uid: %d", dt.toString().latin1(), uid ); | 119 | qWarning(" Date: %s Uid: %d", dt.toString().latin1(), uid ); |
120 | QDateTime current = QDateTime::currentDateTime(); | 120 | QDateTime current = QDateTime::currentDateTime(); |
121 | if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() ) | 121 | if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() ) |
122 | return; | 122 | return; |
123 | doAlarm( dt, uid ); | 123 | doAlarm( dt, uid ); |
124 | needShow = true; | 124 | needShow = true; |
125 | } | 125 | } |
126 | 126 | ||
127 | if (needShow ) | 127 | if (needShow ) |
128 | QPEApplication::setKeepRunning(); | 128 | QPEApplication::setKeepRunning(); |
129 | } | 129 | } |
130 | /* implement the url scripting here */ | 130 | /* implement the url scripting here */ |
131 | void OPimMainWindow::setDocument( const QString& str) { | 131 | void OPimMainWindow::setDocument( const QString& str) { |
132 | doSetDocument( str ); | 132 | doSetDocument( str ); |
133 | } | 133 | } |
134 | /* | 134 | /* |
135 | * we now try to get the array demarshalled | 135 | * we now try to get the array demarshalled |
136 | * check if the rtti matches this one | 136 | * check if the rtti matches this one |
137 | */ | 137 | */ |
138 | OPimRecord* OPimMainWindow::record( int rtti, const QByteArray& array ) { | 138 | OPimRecord* OPimMainWindow::record( int rtti, const QByteArray& array ) { |
139 | if ( service() != rtti ) | 139 | if ( service() != rtti ) |
140 | return 0l; | 140 | return 0l; |
141 | 141 | ||
142 | OPimRecord* record = OPimResolver::self()->record( rtti ); | 142 | OPimRecord* record = OPimResolver::self()->record( rtti ); |
143 | QDataStream str(array, IO_ReadOnly ); | 143 | QDataStream str(array, IO_ReadOnly ); |
144 | if ( !record || !record->loadFromStream(str) ) { | 144 | if ( !record || !record->loadFromStream(str) ) { |
145 | delete record; | 145 | delete record; |
146 | record = 0l; | 146 | record = 0l; |
147 | } | 147 | } |
148 | 148 | ||
149 | return record; | 149 | return record; |
diff --git a/libopie2/opiepim/ui/opimrecurrencewidget.cpp b/libopie2/opiepim/ui/opimrecurrencewidget.cpp index 569bdd5..90c1a5f 100644 --- a/libopie2/opiepim/ui/opimrecurrencewidget.cpp +++ b/libopie2/opiepim/ui/opimrecurrencewidget.cpp | |||
@@ -459,176 +459,176 @@ void OPimRecurrenceWidget::setupDaily() { | |||
459 | spinFreq->setValue( 1 ); | 459 | spinFreq->setValue( 1 ); |
460 | lblFreq->setText( tr("day(s)") ); | 460 | lblFreq->setText( tr("day(s)") ); |
461 | lblVar2->show(); | 461 | lblVar2->show(); |
462 | showRepeatStuff(); | 462 | showRepeatStuff(); |
463 | lblRepeat->setText( strDayTemplate ); | 463 | lblRepeat->setText( strDayTemplate ); |
464 | setupRepeatLabel( 1 ); | 464 | setupRepeatLabel( 1 ); |
465 | } | 465 | } |
466 | void OPimRecurrenceWidget::setupWeekly() { | 466 | void OPimRecurrenceWidget::setupWeekly() { |
467 | // reshow the buttons... | 467 | // reshow the buttons... |
468 | fraExtra->setTitle( tr("Repeat On") ); | 468 | fraExtra->setTitle( tr("Repeat On") ); |
469 | fraExtra->setExclusive( FALSE ); | 469 | fraExtra->setExclusive( FALSE ); |
470 | fraExtra->show(); | 470 | fraExtra->show(); |
471 | if ( startWeekOnMonday ) { | 471 | if ( startWeekOnMonday ) { |
472 | cmdExtra1->setText( tr("Mon") ); | 472 | cmdExtra1->setText( tr("Mon") ); |
473 | cmdExtra2->setText( tr("Tue") ); | 473 | cmdExtra2->setText( tr("Tue") ); |
474 | cmdExtra3->setText( tr("Wed") ); | 474 | cmdExtra3->setText( tr("Wed") ); |
475 | cmdExtra4->setText( tr("Thu") ); | 475 | cmdExtra4->setText( tr("Thu") ); |
476 | cmdExtra5->setText( tr("Fri") ); | 476 | cmdExtra5->setText( tr("Fri") ); |
477 | cmdExtra6->setText( tr("Sat") ); | 477 | cmdExtra6->setText( tr("Sat") ); |
478 | cmdExtra7->setText( tr("Sun") ); | 478 | cmdExtra7->setText( tr("Sun") ); |
479 | } else { | 479 | } else { |
480 | cmdExtra1->setText( tr("Sun") ); | 480 | cmdExtra1->setText( tr("Sun") ); |
481 | cmdExtra2->setText( tr("Mon") ); | 481 | cmdExtra2->setText( tr("Mon") ); |
482 | cmdExtra3->setText( tr("Tue") ); | 482 | cmdExtra3->setText( tr("Tue") ); |
483 | cmdExtra4->setText( tr("Wed") ); | 483 | cmdExtra4->setText( tr("Wed") ); |
484 | cmdExtra5->setText( tr("Thu") ); | 484 | cmdExtra5->setText( tr("Thu") ); |
485 | cmdExtra6->setText( tr("Fri") ); | 485 | cmdExtra6->setText( tr("Fri") ); |
486 | cmdExtra7->setText( tr("Sat") ); | 486 | cmdExtra7->setText( tr("Sat") ); |
487 | } | 487 | } |
488 | // I hope clustering these improve performance.... | 488 | // I hope clustering these improve performance.... |
489 | cmdExtra1->setOn( FALSE ); | 489 | cmdExtra1->setOn( FALSE ); |
490 | cmdExtra2->setOn( FALSE ); | 490 | cmdExtra2->setOn( FALSE ); |
491 | cmdExtra3->setOn( FALSE ); | 491 | cmdExtra3->setOn( FALSE ); |
492 | cmdExtra4->setOn( FALSE ); | 492 | cmdExtra4->setOn( FALSE ); |
493 | cmdExtra5->setOn( FALSE ); | 493 | cmdExtra5->setOn( FALSE ); |
494 | cmdExtra6->setOn( FALSE ); | 494 | cmdExtra6->setOn( FALSE ); |
495 | cmdExtra7->setOn( FALSE ); | 495 | cmdExtra7->setOn( FALSE ); |
496 | 496 | ||
497 | cmdExtra1->show(); | 497 | cmdExtra1->show(); |
498 | cmdExtra2->show(); | 498 | cmdExtra2->show(); |
499 | cmdExtra3->show(); | 499 | cmdExtra3->show(); |
500 | cmdExtra4->show(); | 500 | cmdExtra4->show(); |
501 | cmdExtra5->show(); | 501 | cmdExtra5->show(); |
502 | cmdExtra6->show(); | 502 | cmdExtra6->show(); |
503 | cmdExtra7->show(); | 503 | cmdExtra7->show(); |
504 | 504 | ||
505 | lblWeekVar->show(); | 505 | lblWeekVar->show(); |
506 | spinFreq->setValue( 1 ); | 506 | spinFreq->setValue( 1 ); |
507 | // might as well set the day too... | 507 | // might as well set the day too... |
508 | if ( startWeekOnMonday ) { | 508 | if ( startWeekOnMonday ) { |
509 | fraExtra->setButton( start.dayOfWeek() - 1 ); | 509 | fraExtra->setButton( start.dayOfWeek() - 1 ); |
510 | } else { | 510 | } else { |
511 | fraExtra->setButton( start.dayOfWeek() % 7 ); | 511 | fraExtra->setButton( start.dayOfWeek() % 7 ); |
512 | } | 512 | } |
513 | lblFreq->setText( tr("week(s)") ); | 513 | lblFreq->setText( tr("week(s)") ); |
514 | lblVar2->show(); | 514 | lblVar2->show(); |
515 | showRepeatStuff(); | 515 | showRepeatStuff(); |
516 | setupRepeatLabel( 1 ); | 516 | setupRepeatLabel( 1 ); |
517 | } | 517 | } |
518 | void OPimRecurrenceWidget::setupMonthly() { | 518 | void OPimRecurrenceWidget::setupMonthly() { |
519 | hideExtras(); | 519 | hideExtras(); |
520 | lblWeekVar->hide(); | 520 | lblWeekVar->hide(); |
521 | fraExtra->setTitle( tr("Repeat By") ); | 521 | fraExtra->setTitle( tr("Repeat By") ); |
522 | fraExtra->setExclusive( TRUE ); | 522 | fraExtra->setExclusive( TRUE ); |
523 | fraExtra->show(); | 523 | fraExtra->show(); |
524 | cmdExtra1->setText( tr("Day") ); | 524 | cmdExtra1->setText( tr("Day") ); |
525 | cmdExtra1->show(); | 525 | cmdExtra1->show(); |
526 | cmdExtra2->setText( tr("Date") ); | 526 | cmdExtra2->setText( tr("Date") ); |
527 | cmdExtra2->show(); | 527 | cmdExtra2->show(); |
528 | spinFreq->setValue( 1 ); | 528 | spinFreq->setValue( 1 ); |
529 | lblFreq->setText( tr("month(s)") ); | 529 | lblFreq->setText( tr("month(s)") ); |
530 | lblVar2->show(); | 530 | lblVar2->show(); |
531 | showRepeatStuff(); | 531 | showRepeatStuff(); |
532 | setupRepeatLabel( 1 ); | 532 | setupRepeatLabel( 1 ); |
533 | } | 533 | } |
534 | void OPimRecurrenceWidget::setupYearly() { | 534 | void OPimRecurrenceWidget::setupYearly() { |
535 | hideExtras(); | 535 | hideExtras(); |
536 | lblWeekVar->hide(); | 536 | lblWeekVar->hide(); |
537 | spinFreq->setValue( 1 ); | 537 | spinFreq->setValue( 1 ); |
538 | lblFreq->setText( tr("year(s)") ); | 538 | lblFreq->setText( tr("year(s)") ); |
539 | lblFreq->show(); | 539 | lblFreq->show(); |
540 | lblFreq->show(); | 540 | lblFreq->show(); |
541 | showRepeatStuff(); | 541 | showRepeatStuff(); |
542 | lblVar2->show(); | 542 | lblVar2->show(); |
543 | QString strEvery = strYearTemplate.arg( start.monthName(start.month()) ).arg( numberPlacing(start.day()) ); | 543 | QString strEvery = strYearTemplate.arg( start.monthName(start.month()) ).arg( numberPlacing(start.day()) ); |
544 | lblRepeat->setText( strEvery ); | 544 | lblRepeat->setText( strEvery ); |
545 | setupRepeatLabel( 1 ); | 545 | setupRepeatLabel( 1 ); |
546 | 546 | ||
547 | } | 547 | } |
548 | void OPimRecurrenceWidget::init() { | 548 | void OPimRecurrenceWidget::init() { |
549 | QPopupMenu *m1 = new QPopupMenu( this ); | 549 | QPopupMenu *m1 = new QPopupMenu( this ); |
550 | repeatPicker = new DateBookMonth( m1, 0, TRUE ); | 550 | repeatPicker = new DateBookMonth( m1, 0, TRUE ); |
551 | m1->insertItem( repeatPicker ); | 551 | m1->insertItem( repeatPicker ); |
552 | cmdEnd->setPopup( m1 ); | 552 | cmdEnd->setPopup( m1 ); |
553 | cmdEnd->setPopupDelay( 0 ); | 553 | cmdEnd->setPopupDelay( 0 ); |
554 | 554 | ||
555 | QObject::connect( repeatPicker, SIGNAL(dateClicked(int, int, int)), | 555 | QObject::connect( repeatPicker, SIGNAL(dateClicked(int,int,int)), |
556 | this, SLOT(endDateChanged(int, int, int)) ); | 556 | this, SLOT(endDateChanged(int,int,int)) ); |
557 | QObject::connect( qApp, SIGNAL(weekChanged(bool)), | 557 | QObject::connect( qApp, SIGNAL(weekChanged(bool)), |
558 | this, SLOT(slotChangeStartOfWeek(bool)) ); | 558 | this, SLOT(slotChangeStartOfWeek(bool)) ); |
559 | 559 | ||
560 | listRTypeButtons.setAutoDelete( TRUE ); | 560 | listRTypeButtons.setAutoDelete( TRUE ); |
561 | listRTypeButtons.append( cmdNone ); | 561 | listRTypeButtons.append( cmdNone ); |
562 | listRTypeButtons.append( cmdDay ); | 562 | listRTypeButtons.append( cmdDay ); |
563 | listRTypeButtons.append( cmdWeek ); | 563 | listRTypeButtons.append( cmdWeek ); |
564 | listRTypeButtons.append( cmdMonth ); | 564 | listRTypeButtons.append( cmdMonth ); |
565 | listRTypeButtons.append( cmdYear ); | 565 | listRTypeButtons.append( cmdYear ); |
566 | 566 | ||
567 | listExtra.setAutoDelete( TRUE ); | 567 | listExtra.setAutoDelete( TRUE ); |
568 | listExtra.append( cmdExtra1 ); | 568 | listExtra.append( cmdExtra1 ); |
569 | listExtra.append( cmdExtra2 ); | 569 | listExtra.append( cmdExtra2 ); |
570 | listExtra.append( cmdExtra3 ); | 570 | listExtra.append( cmdExtra3 ); |
571 | listExtra.append( cmdExtra4 ); | 571 | listExtra.append( cmdExtra4 ); |
572 | listExtra.append( cmdExtra5 ); | 572 | listExtra.append( cmdExtra5 ); |
573 | listExtra.append( cmdExtra6 ); | 573 | listExtra.append( cmdExtra6 ); |
574 | listExtra.append( cmdExtra7 ); | 574 | listExtra.append( cmdExtra7 ); |
575 | } | 575 | } |
576 | void OPimRecurrenceWidget::hideExtras() { | 576 | void OPimRecurrenceWidget::hideExtras() { |
577 | // hide the extra buttons... | 577 | // hide the extra buttons... |
578 | fraExtra->hide(); | 578 | fraExtra->hide(); |
579 | chkNoEnd->hide(); | 579 | chkNoEnd->hide(); |
580 | QListIterator<QToolButton> it( listExtra ); | 580 | QListIterator<QToolButton> it( listExtra ); |
581 | for ( ; *it; ++it ) { | 581 | for ( ; *it; ++it ) { |
582 | (*it)->hide(); | 582 | (*it)->hide(); |
583 | (*it)->setOn( FALSE ); | 583 | (*it)->setOn( FALSE ); |
584 | } | 584 | } |
585 | } | 585 | } |
586 | void OPimRecurrenceWidget::showRepeatStuff() { | 586 | void OPimRecurrenceWidget::showRepeatStuff() { |
587 | cmdEnd->show(); | 587 | cmdEnd->show(); |
588 | chkNoEnd->show(); | 588 | chkNoEnd->show(); |
589 | lblFreq->show(); | 589 | lblFreq->show(); |
590 | lblEvery->show(); | 590 | lblEvery->show(); |
591 | lblFreq->show(); | 591 | lblFreq->show(); |
592 | spinFreq->show(); | 592 | spinFreq->show(); |
593 | lblEnd->show(); | 593 | lblEnd->show(); |
594 | lblRepeat->setText( tr("Every") ); | 594 | lblRepeat->setText( tr("Every") ); |
595 | } | 595 | } |
596 | 596 | ||
597 | 597 | ||
598 | static int week( const QDate &start ) | 598 | static int week( const QDate &start ) |
599 | { | 599 | { |
600 | // figure out the week... | 600 | // figure out the week... |
601 | int stop = start.day(), | 601 | int stop = start.day(), |
602 | sentinel = start.dayOfWeek(), | 602 | sentinel = start.dayOfWeek(), |
603 | dayOfWeek = QDate( start.year(), start.month(), 1 ).dayOfWeek(), | 603 | dayOfWeek = QDate( start.year(), start.month(), 1 ).dayOfWeek(), |
604 | week = 1, | 604 | week = 1, |
605 | i; | 605 | i; |
606 | for ( i = 1; i < stop; i++ ) { | 606 | for ( i = 1; i < stop; i++ ) { |
607 | if ( dayOfWeek++ == sentinel ) | 607 | if ( dayOfWeek++ == sentinel ) |
608 | week++; | 608 | week++; |
609 | if ( dayOfWeek > 7 ) | 609 | if ( dayOfWeek > 7 ) |
610 | dayOfWeek = 0; | 610 | dayOfWeek = 0; |
611 | } | 611 | } |
612 | return week; | 612 | return week; |
613 | } | 613 | } |
614 | 614 | ||
615 | static QString numberPlacing( int x ) | 615 | static QString numberPlacing( int x ) |
616 | { | 616 | { |
617 | // I hope this works in other languages besides english... | 617 | // I hope this works in other languages besides english... |
618 | QString str = QString::number( x ); | 618 | QString str = QString::number( x ); |
619 | switch ( x % 10 ) { | 619 | switch ( x % 10 ) { |
620 | case 1: | 620 | case 1: |
621 | str += QWidget::tr( "st" ); | 621 | str += QWidget::tr( "st" ); |
622 | break; | 622 | break; |
623 | case 2: | 623 | case 2: |
624 | str += QWidget::tr( "nd" ); | 624 | str += QWidget::tr( "nd" ); |
625 | break; | 625 | break; |
626 | case 3: | 626 | case 3: |
627 | str += QWidget::tr( "rd" ); | 627 | str += QWidget::tr( "rd" ); |
628 | break; | 628 | break; |
629 | default: | 629 | default: |
630 | str += QWidget::tr( "th" ); | 630 | str += QWidget::tr( "th" ); |
631 | break; | 631 | break; |
632 | } | 632 | } |
633 | return str; | 633 | return str; |
634 | } | 634 | } |
diff --git a/libopie2/opieui/fileselector/ofiledialog.cpp b/libopie2/opieui/fileselector/ofiledialog.cpp index 2a89c5d..e7daead 100644 --- a/libopie2/opieui/fileselector/ofiledialog.cpp +++ b/libopie2/opieui/fileselector/ofiledialog.cpp | |||
@@ -18,194 +18,194 @@ | |||
18 | ++= -. .` .: details. | 18 | ++= -. .` .: details. |
19 | : = ...= . :.=- | 19 | : = ...= . :.=- |
20 | -. .:....=;==+<; You should have received a copy of the GNU | 20 | -. .:....=;==+<; You should have received a copy of the GNU |
21 | -_. . . )=. = Library General Public License along with | 21 | -_. . . )=. = Library General Public License along with |
22 | -- :-=` this library; see the file COPYING.LIB. | 22 | -- :-=` this library; see the file COPYING.LIB. |
23 | If not, write to the Free Software Foundation, | 23 | If not, write to the Free Software Foundation, |
24 | Inc., 59 Temple Place - Suite 330, | 24 | Inc., 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | 29 | ||
30 | /* OPIE */ | 30 | /* OPIE */ |
31 | #include <opie2/ofiledialog.h> | 31 | #include <opie2/ofiledialog.h> |
32 | #include <qpe/applnk.h> | 32 | #include <qpe/applnk.h> |
33 | #include <qpe/config.h> | 33 | #include <qpe/config.h> |
34 | #include <qpe/qpeapplication.h> | 34 | #include <qpe/qpeapplication.h> |
35 | 35 | ||
36 | /* QT */ | 36 | /* QT */ |
37 | #include <qfileinfo.h> | 37 | #include <qfileinfo.h> |
38 | #include <qstring.h> | 38 | #include <qstring.h> |
39 | #include <qapplication.h> | 39 | #include <qapplication.h> |
40 | #include <qlayout.h> | 40 | #include <qlayout.h> |
41 | 41 | ||
42 | using namespace Opie; | 42 | using namespace Opie; |
43 | 43 | ||
44 | namespace | 44 | namespace |
45 | { | 45 | { |
46 | /* | 46 | /* |
47 | * helper functions to load the start dir | 47 | * helper functions to load the start dir |
48 | * and to save it | 48 | * and to save it |
49 | * helper to extract the dir out of a file name | 49 | * helper to extract the dir out of a file name |
50 | */ | 50 | */ |
51 | /** | 51 | /** |
52 | * This method will use Config( argv[0] ); | 52 | * This method will use Config( argv[0] ); |
53 | * @param key The group key used | 53 | * @param key The group key used |
54 | */ | 54 | */ |
55 | QString lastUsedDir( const QString& key ) | 55 | QString lastUsedDir( const QString& key ) |
56 | { | 56 | { |
57 | if ( qApp->argc() < 1 ) | 57 | if ( qApp->argc() < 1 ) |
58 | return QString::null; | 58 | return QString::null; |
59 | 59 | ||
60 | Config cfg( QFileInfo(qApp->argv()[0]).fileName() ); // appname | 60 | Config cfg( QFileInfo(qApp->argv()[0]).fileName() ); // appname |
61 | cfg.setGroup( key ); | 61 | cfg.setGroup( key ); |
62 | return cfg.readEntry("LastDir", QPEApplication::documentDir() ); | 62 | return cfg.readEntry("LastDir", QPEApplication::documentDir() ); |
63 | } | 63 | } |
64 | 64 | ||
65 | void saveLastDir( const QString& key, const QString& file ) | 65 | void saveLastDir( const QString& key, const QString& file ) |
66 | { | 66 | { |
67 | if ( qApp->argc() < 1 ) | 67 | if ( qApp->argc() < 1 ) |
68 | return; | 68 | return; |
69 | 69 | ||
70 | Config cfg( QFileInfo(qApp->argv()[0]).fileName() ); | 70 | Config cfg( QFileInfo(qApp->argv()[0]).fileName() ); |
71 | cfg.setGroup( key ); | 71 | cfg.setGroup( key ); |
72 | QFileInfo inf( file ); | 72 | QFileInfo inf( file ); |
73 | cfg.writeEntry("LastDir", inf.dirPath( true ) ); | 73 | cfg.writeEntry("LastDir", inf.dirPath( true ) ); |
74 | } | 74 | } |
75 | }; | 75 | }; |
76 | 76 | ||
77 | /** | 77 | /** |
78 | * This constructs a modal dialog | 78 | * This constructs a modal dialog |
79 | * | 79 | * |
80 | * @param caption The caption of the dialog | 80 | * @param caption The caption of the dialog |
81 | * @param wid The parent widget | 81 | * @param wid The parent widget |
82 | * @param mode The mode of the OFileSelector @see OFileSelector | 82 | * @param mode The mode of the OFileSelector @see OFileSelector |
83 | * @param selector The selector of the OFileSelector | 83 | * @param selector The selector of the OFileSelector |
84 | * @param dirName the dir or resource to start from | 84 | * @param dirName the dir or resource to start from |
85 | * @param fileName a proposed or existing filename | 85 | * @param fileName a proposed or existing filename |
86 | * @param mimetypes The mimeTypes | 86 | * @param mimetypes The mimeTypes |
87 | */ | 87 | */ |
88 | OFileDialog::OFileDialog(const QString &caption, | 88 | OFileDialog::OFileDialog(const QString &caption, |
89 | QWidget *wid, int mode, int selector, | 89 | QWidget *wid, int mode, int selector, |
90 | const QString &dirName, | 90 | const QString &dirName, |
91 | const QString &fileName, | 91 | const QString &fileName, |
92 | const QMap<QString,QStringList>& mimetypes ) | 92 | const QMap<QString,QStringList>& mimetypes ) |
93 | : QDialog( wid, "OFileDialog", true ) | 93 | : QDialog( wid, "OFileDialog", true ) |
94 | { | 94 | { |
95 | // QVBoxLayout *lay = new QVBoxLayout(this); | 95 | // QVBoxLayout *lay = new QVBoxLayout(this); |
96 | //showMaximized(); | 96 | //showMaximized(); |
97 | QVBoxLayout *lay = new QVBoxLayout(this ); | 97 | QVBoxLayout *lay = new QVBoxLayout(this ); |
98 | file = new OFileSelector(this , mode, selector, | 98 | file = new OFileSelector(this , mode, selector, |
99 | dirName, fileName, | 99 | dirName, fileName, |
100 | mimetypes ); | 100 | mimetypes ); |
101 | lay->addWidget( file ); | 101 | lay->addWidget( file ); |
102 | 102 | ||
103 | //lay->addWidget( file ); | 103 | //lay->addWidget( file ); |
104 | //showFullScreen(); | 104 | //showFullScreen(); |
105 | setCaption( caption.isEmpty() ? tr("FileDialog") : caption ); | 105 | setCaption( caption.isEmpty() ? tr("FileDialog") : caption ); |
106 | connect(file, SIGNAL(fileSelected(const QString&) ), | 106 | connect(file, SIGNAL(fileSelected(const QString&) ), |
107 | this, SLOT(slotFileSelected(const QString&) ) ); | 107 | this, SLOT(slotFileSelected(const QString&) ) ); |
108 | connect(file, SIGNAL(ok() ), | 108 | connect(file, SIGNAL(ok() ), |
109 | this, SLOT(slotSelectorOk()) ) ; | 109 | this, SLOT(slotSelectorOk()) ) ; |
110 | 110 | ||
111 | connect(file, SIGNAL(dirSelected(const QString&) ), this, SLOT(slotDirSelected(const QString&) ) ); | 111 | connect(file, SIGNAL(dirSelected(const QString&) ), this, SLOT(slotDirSelected(const QString&) ) ); |
112 | 112 | ||
113 | #if 0 | 113 | #if 0 |
114 | connect(file, SIGNAL(dirSelected(const QString &) ), | 114 | connect(file, SIGNAL(dirSelected(const QString&) ), |
115 | this, SLOT(slotDirSelected(const QString &) ) ); | 115 | this, SLOT(slotDirSelected(const QString&) ) ); |
116 | #endif | 116 | #endif |
117 | } | 117 | } |
118 | /** | 118 | /** |
119 | * @returns the mimetype of the selected | 119 | * @returns the mimetype of the selected |
120 | * currently it return QString::null | 120 | * currently it return QString::null |
121 | */ | 121 | */ |
122 | QString OFileDialog::mimetype()const | 122 | QString OFileDialog::mimetype()const |
123 | { | 123 | { |
124 | return QString::null; | 124 | return QString::null; |
125 | } | 125 | } |
126 | 126 | ||
127 | /** | 127 | /** |
128 | * @return the fileName | 128 | * @return the fileName |
129 | */ | 129 | */ |
130 | QString OFileDialog::fileName()const | 130 | QString OFileDialog::fileName()const |
131 | { | 131 | { |
132 | return file->selectedName(); | 132 | return file->selectedName(); |
133 | } | 133 | } |
134 | 134 | ||
135 | /** | 135 | /** |
136 | * return a DocLnk to the current file | 136 | * return a DocLnk to the current file |
137 | */ | 137 | */ |
138 | DocLnk OFileDialog::selectedDocument()const | 138 | DocLnk OFileDialog::selectedDocument()const |
139 | { | 139 | { |
140 | return file->selectedDocument(); | 140 | return file->selectedDocument(); |
141 | } | 141 | } |
142 | 142 | ||
143 | /** | 143 | /** |
144 | * This opens up a filedialog in Open mode | 144 | * This opens up a filedialog in Open mode |
145 | * | 145 | * |
146 | * @param selector the Selector Mode | 146 | * @param selector the Selector Mode |
147 | * @param startDir Where to start from | 147 | * @param startDir Where to start from |
148 | * @param file A proposed filename | 148 | * @param file A proposed filename |
149 | * @param mimes A list of MimeTypes | 149 | * @param mimes A list of MimeTypes |
150 | * @param wid the parent | 150 | * @param wid the parent |
151 | * @param caption of the dialog if QString::null tr("Open") will be used | 151 | * @param caption of the dialog if QString::null tr("Open") will be used |
152 | * @return the fileName or QString::null | 152 | * @return the fileName or QString::null |
153 | */ | 153 | */ |
154 | QString OFileDialog::getOpenFileName(int selector, | 154 | QString OFileDialog::getOpenFileName(int selector, |
155 | const QString &_startDir, | 155 | const QString &_startDir, |
156 | const QString &file, | 156 | const QString &file, |
157 | const MimeTypes &mimes, | 157 | const MimeTypes &mimes, |
158 | QWidget *wid, | 158 | QWidget *wid, |
159 | const QString &caption ) | 159 | const QString &caption ) |
160 | { | 160 | { |
161 | QString ret; | 161 | QString ret; |
162 | QString startDir = _startDir; | 162 | QString startDir = _startDir; |
163 | if (startDir.isEmpty() ) | 163 | if (startDir.isEmpty() ) |
164 | startDir = lastUsedDir( "FileDialog-OPEN" ); | 164 | startDir = lastUsedDir( "FileDialog-OPEN" ); |
165 | 165 | ||
166 | 166 | ||
167 | OFileDialog dlg( caption.isEmpty() ? tr("Open") : caption, | 167 | OFileDialog dlg( caption.isEmpty() ? tr("Open") : caption, |
168 | wid, OFileSelector::Open, selector, startDir, file, mimes); | 168 | wid, OFileSelector::Open, selector, startDir, file, mimes); |
169 | dlg.showMaximized(); | 169 | dlg.showMaximized(); |
170 | if( dlg.exec() ) | 170 | if( dlg.exec() ) |
171 | { | 171 | { |
172 | ret = dlg.fileName(); | 172 | ret = dlg.fileName(); |
173 | saveLastDir( "FileDialog-OPEN", ret ); | 173 | saveLastDir( "FileDialog-OPEN", ret ); |
174 | } | 174 | } |
175 | 175 | ||
176 | return ret; | 176 | return ret; |
177 | } | 177 | } |
178 | 178 | ||
179 | /** | 179 | /** |
180 | * This opens up a file dialog in save mode | 180 | * This opens up a file dialog in save mode |
181 | * @see getOpenFileName | 181 | * @see getOpenFileName |
182 | */ | 182 | */ |
183 | QString OFileDialog::getSaveFileName(int selector, | 183 | QString OFileDialog::getSaveFileName(int selector, |
184 | const QString &_startDir, | 184 | const QString &_startDir, |
185 | const QString &file, | 185 | const QString &file, |
186 | const MimeTypes &mimes, | 186 | const MimeTypes &mimes, |
187 | QWidget *wid, | 187 | QWidget *wid, |
188 | const QString &caption ) | 188 | const QString &caption ) |
189 | { | 189 | { |
190 | QString ret; | 190 | QString ret; |
191 | QString startDir = _startDir; | 191 | QString startDir = _startDir; |
192 | if (startDir.isEmpty() ) | 192 | if (startDir.isEmpty() ) |
193 | startDir = lastUsedDir( "FileDialog-SAVE" ); | 193 | startDir = lastUsedDir( "FileDialog-SAVE" ); |
194 | 194 | ||
195 | OFileDialog dlg( caption.isEmpty() ? tr("Save") : caption, | 195 | OFileDialog dlg( caption.isEmpty() ? tr("Save") : caption, |
196 | wid, OFileSelector::Save, selector, startDir, file, mimes); | 196 | wid, OFileSelector::Save, selector, startDir, file, mimes); |
197 | dlg.showMaximized(); | 197 | dlg.showMaximized(); |
198 | if( dlg.exec() ) | 198 | if( dlg.exec() ) |
199 | { | 199 | { |
200 | ret = dlg.fileName(); | 200 | ret = dlg.fileName(); |
201 | saveLastDir( "FileDialog-SAVE", ret ); | 201 | saveLastDir( "FileDialog-SAVE", ret ); |
202 | } | 202 | } |
203 | 203 | ||
204 | return ret; | 204 | return ret; |
205 | } | 205 | } |
206 | 206 | ||
207 | void OFileDialog::slotFileSelected(const QString & ) | 207 | void OFileDialog::slotFileSelected(const QString & ) |
208 | { | 208 | { |
209 | accept(); | 209 | accept(); |
210 | } | 210 | } |
211 | 211 | ||
diff --git a/libopie2/opieui/fileselector/ofileselector.cpp b/libopie2/opieui/fileselector/ofileselector.cpp index 600daff..15cadd4 100644 --- a/libopie2/opieui/fileselector/ofileselector.cpp +++ b/libopie2/opieui/fileselector/ofileselector.cpp | |||
@@ -117,198 +117,198 @@ void OFileViewInterface::ok() | |||
117 | void OFileViewInterface::cancel() | 117 | void OFileViewInterface::cancel() |
118 | { | 118 | { |
119 | emit selector()->cancel(); | 119 | emit selector()->cancel(); |
120 | } | 120 | } |
121 | 121 | ||
122 | void OFileViewInterface::closeMe() | 122 | void OFileViewInterface::closeMe() |
123 | { | 123 | { |
124 | emit selector()->closeMe(); | 124 | emit selector()->closeMe(); |
125 | } | 125 | } |
126 | 126 | ||
127 | void OFileViewInterface::fileSelected( const QString& str) | 127 | void OFileViewInterface::fileSelected( const QString& str) |
128 | { | 128 | { |
129 | emit selector()->fileSelected( str); | 129 | emit selector()->fileSelected( str); |
130 | } | 130 | } |
131 | 131 | ||
132 | void OFileViewInterface::fileSelected( const DocLnk& lnk) | 132 | void OFileViewInterface::fileSelected( const DocLnk& lnk) |
133 | { | 133 | { |
134 | emit selector()->fileSelected( lnk ); | 134 | emit selector()->fileSelected( lnk ); |
135 | } | 135 | } |
136 | 136 | ||
137 | void OFileViewInterface::setCurrentFileName( const QString& str ) | 137 | void OFileViewInterface::setCurrentFileName( const QString& str ) |
138 | { | 138 | { |
139 | selector()->m_lneEdit->setText( str ); | 139 | selector()->m_lneEdit->setText( str ); |
140 | } | 140 | } |
141 | 141 | ||
142 | QString OFileViewInterface::currentFileName()const | 142 | QString OFileViewInterface::currentFileName()const |
143 | { | 143 | { |
144 | return selector()->m_lneEdit->text(); | 144 | return selector()->m_lneEdit->text(); |
145 | } | 145 | } |
146 | 146 | ||
147 | QString OFileViewInterface::startDirectory()const | 147 | QString OFileViewInterface::startDirectory()const |
148 | { | 148 | { |
149 | return selector()->m_startDir; | 149 | return selector()->m_startDir; |
150 | } | 150 | } |
151 | 151 | ||
152 | ODocumentFileView::ODocumentFileView( OFileSelector* selector ) | 152 | ODocumentFileView::ODocumentFileView( OFileSelector* selector ) |
153 | :OFileViewInterface( selector ) | 153 | :OFileViewInterface( selector ) |
154 | { | 154 | { |
155 | m_selector = 0; | 155 | m_selector = 0; |
156 | setName( QObject::tr("Documents") ); | 156 | setName( QObject::tr("Documents") ); |
157 | } | 157 | } |
158 | 158 | ||
159 | ODocumentFileView::~ODocumentFileView() | 159 | ODocumentFileView::~ODocumentFileView() |
160 | { | 160 | { |
161 | } | 161 | } |
162 | 162 | ||
163 | QString ODocumentFileView::selectedName()const | 163 | QString ODocumentFileView::selectedName()const |
164 | { | 164 | { |
165 | if (!m_selector) | 165 | if (!m_selector) |
166 | return QString::null; | 166 | return QString::null; |
167 | 167 | ||
168 | return m_selector->selectedDocument().file(); | 168 | return m_selector->selectedDocument().file(); |
169 | } | 169 | } |
170 | 170 | ||
171 | QString ODocumentFileView::selectedPath()const | 171 | QString ODocumentFileView::selectedPath()const |
172 | { | 172 | { |
173 | return QPEApplication::documentDir(); | 173 | return QPEApplication::documentDir(); |
174 | } | 174 | } |
175 | 175 | ||
176 | QString ODocumentFileView::directory()const | 176 | QString ODocumentFileView::directory()const |
177 | { | 177 | { |
178 | return selectedPath(); | 178 | return selectedPath(); |
179 | } | 179 | } |
180 | 180 | ||
181 | void ODocumentFileView::reread() | 181 | void ODocumentFileView::reread() |
182 | { | 182 | { |
183 | if (!m_selector) | 183 | if (!m_selector) |
184 | return; | 184 | return; |
185 | 185 | ||
186 | m_selector->setNewVisible( showNew() ); | 186 | m_selector->setNewVisible( showNew() ); |
187 | m_selector->setCloseVisible( showClose() ); | 187 | m_selector->setCloseVisible( showClose() ); |
188 | m_selector->filter = currentMimeType().join(";"); | 188 | m_selector->filter = currentMimeType().join(";"); |
189 | m_selector->reread(); | 189 | m_selector->reread(); |
190 | } | 190 | } |
191 | 191 | ||
192 | int ODocumentFileView::fileCount()const | 192 | int ODocumentFileView::fileCount()const |
193 | { | 193 | { |
194 | if (!m_selector) | 194 | if (!m_selector) |
195 | return -1; | 195 | return -1; |
196 | 196 | ||
197 | return m_selector->fileCount(); | 197 | return m_selector->fileCount(); |
198 | } | 198 | } |
199 | 199 | ||
200 | DocLnk ODocumentFileView::selectedDocument()const | 200 | DocLnk ODocumentFileView::selectedDocument()const |
201 | { | 201 | { |
202 | if (!m_selector) | 202 | if (!m_selector) |
203 | return DocLnk(); | 203 | return DocLnk(); |
204 | 204 | ||
205 | return m_selector->selectedDocument(); | 205 | return m_selector->selectedDocument(); |
206 | } | 206 | } |
207 | 207 | ||
208 | QWidget* ODocumentFileView::widget( QWidget* parent ) | 208 | QWidget* ODocumentFileView::widget( QWidget* parent ) |
209 | { | 209 | { |
210 | if (!m_selector ) | 210 | if (!m_selector ) |
211 | { | 211 | { |
212 | m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() ); | 212 | m_selector = new FileSelector(currentMimeType().join(";"), parent, "fileselector", showNew(), showClose() ); |
213 | QObject::connect(m_selector, SIGNAL(fileSelected( const DocLnk& ) ), | 213 | QObject::connect(m_selector, SIGNAL(fileSelected(const DocLnk&) ), |
214 | selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) ); | 214 | selector(), SLOT(slotDocLnkBridge(const DocLnk&) ) ); |
215 | QObject::connect(m_selector, SIGNAL(closeMe() ), | 215 | QObject::connect(m_selector, SIGNAL(closeMe() ), |
216 | selector(), SIGNAL(closeMe() ) ); | 216 | selector(), SIGNAL(closeMe() ) ); |
217 | QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk& ) ), | 217 | QObject::connect(m_selector, SIGNAL(newSelected(const DocLnk&) ), |
218 | selector(), SIGNAL(newSelected(const DocLnk& ) ) ); | 218 | selector(), SIGNAL(newSelected(const DocLnk&) ) ); |
219 | } | 219 | } |
220 | 220 | ||
221 | return m_selector; | 221 | return m_selector; |
222 | } | 222 | } |
223 | 223 | ||
224 | /* | 224 | /* |
225 | * This is the file system view used | 225 | * This is the file system view used |
226 | * we use a QListView + QListViewItems for it | 226 | * we use a QListView + QListViewItems for it |
227 | */ | 227 | */ |
228 | 228 | ||
229 | OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap, | 229 | OFileSelectorItem::OFileSelectorItem( QListView* view, const QPixmap& pixmap, |
230 | const QString& path, const QString& date, | 230 | const QString& path, const QString& date, |
231 | const QString& size, const QString& dir, | 231 | const QString& size, const QString& dir, |
232 | bool isLocked, bool isDir ) | 232 | bool isLocked, bool isDir ) |
233 | : QListViewItem( view ) | 233 | : QListViewItem( view ) |
234 | { | 234 | { |
235 | setPixmap(0, pixmap ); | 235 | setPixmap(0, pixmap ); |
236 | setText(1, path ); | 236 | setText(1, path ); |
237 | setText(2, size ); | 237 | setText(2, size ); |
238 | setText(3, date ); | 238 | setText(3, date ); |
239 | m_isDir = isDir; | 239 | m_isDir = isDir; |
240 | m_dir = dir; | 240 | m_dir = dir; |
241 | m_locked = isLocked; | 241 | m_locked = isLocked; |
242 | } | 242 | } |
243 | 243 | ||
244 | OFileSelectorItem::~OFileSelectorItem() | 244 | OFileSelectorItem::~OFileSelectorItem() |
245 | { | 245 | { |
246 | } | 246 | } |
247 | 247 | ||
248 | bool OFileSelectorItem::isLocked()const | 248 | bool OFileSelectorItem::isLocked()const |
249 | { | 249 | { |
250 | return m_locked; | 250 | return m_locked; |
251 | } | 251 | } |
252 | 252 | ||
253 | QString OFileSelectorItem::directory()const | 253 | QString OFileSelectorItem::directory()const |
254 | { | 254 | { |
255 | return m_dir; | 255 | return m_dir; |
256 | } | 256 | } |
257 | 257 | ||
258 | bool OFileSelectorItem::isDir()const | 258 | bool OFileSelectorItem::isDir()const |
259 | { | 259 | { |
260 | return m_isDir; | 260 | return m_isDir; |
261 | } | 261 | } |
262 | 262 | ||
263 | QString OFileSelectorItem::path()const | 263 | QString OFileSelectorItem::path()const |
264 | { | 264 | { |
265 | return text( 1 ); | 265 | return text( 1 ); |
266 | } | 266 | } |
267 | 267 | ||
268 | QString OFileSelectorItem::key( int id, bool )const | 268 | QString OFileSelectorItem::key( int id, bool )const |
269 | { | 269 | { |
270 | QString ke; | 270 | QString ke; |
271 | if( id == 0 || id == 1 ) | 271 | if( id == 0 || id == 1 ) |
272 | { // name | 272 | { // name |
273 | if( m_isDir ) | 273 | if( m_isDir ) |
274 | { | 274 | { |
275 | ke.append("0" ); | 275 | ke.append("0" ); |
276 | ke.append( text(1) ); | 276 | ke.append( text(1) ); |
277 | } | 277 | } |
278 | else | 278 | else |
279 | { | 279 | { |
280 | ke.append("1" ); | 280 | ke.append("1" ); |
281 | ke.append( text(1) ); | 281 | ke.append( text(1) ); |
282 | } | 282 | } |
283 | return ke; | 283 | return ke; |
284 | } | 284 | } |
285 | else | 285 | else |
286 | return text( id ); | 286 | return text( id ); |
287 | 287 | ||
288 | } | 288 | } |
289 | 289 | ||
290 | OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, OFileSelector* sel) | 290 | OFileViewFileListView::OFileViewFileListView( QWidget* parent, const QString& startDir, OFileSelector* sel) |
291 | :QWidget( parent ), m_sel( sel ) | 291 | :QWidget( parent ), m_sel( sel ) |
292 | { | 292 | { |
293 | m_all = false; | 293 | m_all = false; |
294 | QVBoxLayout* lay = new QVBoxLayout( this ); | 294 | QVBoxLayout* lay = new QVBoxLayout( this ); |
295 | m_currentDir = startDir; | 295 | m_currentDir = startDir; |
296 | 296 | ||
297 | /* | 297 | /* |
298 | * now we add a special bar | 298 | * now we add a special bar |
299 | * One Button For Up | 299 | * One Button For Up |
300 | * Home | 300 | * Home |
301 | * Doc | 301 | * Doc |
302 | * And a dropdown menu with FileSystems | 302 | * And a dropdown menu with FileSystems |
303 | * FUTURE: one to change dir with lineedit | 303 | * FUTURE: one to change dir with lineedit |
304 | * Bookmarks | 304 | * Bookmarks |
305 | * Create Dir | 305 | * Create Dir |
306 | */ | 306 | */ |
307 | QHBox* box = new QHBox(this ); | 307 | QHBox* box = new QHBox(this ); |
308 | box->setBackgroundMode( PaletteButton ); | 308 | box->setBackgroundMode( PaletteButton ); |
309 | box->setSpacing( 0 ); | 309 | box->setSpacing( 0 ); |
310 | 310 | ||
311 | QToolButton *btn = new QToolButton( box ); | 311 | QToolButton *btn = new QToolButton( box ); |
312 | btn->setIconSet( Resource::loadIconSet("up") ); | 312 | btn->setIconSet( Resource::loadIconSet("up") ); |
313 | connect(btn, SIGNAL(clicked() ), | 313 | connect(btn, SIGNAL(clicked() ), |
314 | this, SLOT( cdUP() ) ); | 314 | this, SLOT( cdUP() ) ); |
@@ -431,194 +431,194 @@ void OFileViewFileListView::reread( bool all ) | |||
431 | const QFileInfoList *list = dir.entryInfoList(); | 431 | const QFileInfoList *list = dir.entryInfoList(); |
432 | if (!list) | 432 | if (!list) |
433 | { | 433 | { |
434 | cdUP(); | 434 | cdUP(); |
435 | return; | 435 | return; |
436 | } | 436 | } |
437 | 437 | ||
438 | QFileInfoListIterator it( *list ); | 438 | QFileInfoListIterator it( *list ); |
439 | QFileInfo *fi; | 439 | QFileInfo *fi; |
440 | while( (fi=it.current() ) ) | 440 | while( (fi=it.current() ) ) |
441 | { | 441 | { |
442 | if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ) | 442 | if( fi->fileName() == QString::fromLatin1("..") || fi->fileName() == QString::fromLatin1(".") ) |
443 | { | 443 | { |
444 | ++it; | 444 | ++it; |
445 | continue; | 445 | continue; |
446 | } | 446 | } |
447 | 447 | ||
448 | /* | 448 | /* |
449 | * It is a symlink we try to resolve it now but don't let us attack by DOS | 449 | * It is a symlink we try to resolve it now but don't let us attack by DOS |
450 | * | 450 | * |
451 | */ | 451 | */ |
452 | if( fi->isSymLink() ) | 452 | if( fi->isSymLink() ) |
453 | { | 453 | { |
454 | QString file = fi->dirPath( true ) + "/" + fi->readLink(); | 454 | QString file = fi->dirPath( true ) + "/" + fi->readLink(); |
455 | for( int i = 0; i<=4; i++) | 455 | for( int i = 0; i<=4; i++) |
456 | { // 5 tries to prevent dos | 456 | { // 5 tries to prevent dos |
457 | QFileInfo info( file ); | 457 | QFileInfo info( file ); |
458 | if( !info.exists() ) | 458 | if( !info.exists() ) |
459 | { | 459 | { |
460 | addSymlink( fi, TRUE ); | 460 | addSymlink( fi, TRUE ); |
461 | break; | 461 | break; |
462 | } | 462 | } |
463 | else if( info.isDir() ) | 463 | else if( info.isDir() ) |
464 | { | 464 | { |
465 | addDir( fi, TRUE ); | 465 | addDir( fi, TRUE ); |
466 | break; | 466 | break; |
467 | } | 467 | } |
468 | else if( info.isFile() ) | 468 | else if( info.isFile() ) |
469 | { | 469 | { |
470 | addFile( fi, TRUE ); | 470 | addFile( fi, TRUE ); |
471 | break; | 471 | break; |
472 | } | 472 | } |
473 | else if( info.isSymLink() ) | 473 | else if( info.isSymLink() ) |
474 | { | 474 | { |
475 | file = info.dirPath(true ) + "/" + info.readLink() ; | 475 | file = info.dirPath(true ) + "/" + info.readLink() ; |
476 | break; | 476 | break; |
477 | } | 477 | } |
478 | else if( i == 4) | 478 | else if( i == 4) |
479 | { // couldn't resolve symlink add it as symlink | 479 | { // couldn't resolve symlink add it as symlink |
480 | addSymlink( fi ); | 480 | addSymlink( fi ); |
481 | } | 481 | } |
482 | } // off for loop for symlink resolving | 482 | } // off for loop for symlink resolving |
483 | } | 483 | } |
484 | else if( fi->isDir() ) | 484 | else if( fi->isDir() ) |
485 | addDir( fi ); | 485 | addDir( fi ); |
486 | else if( fi->isFile() ) | 486 | else if( fi->isFile() ) |
487 | addFile( fi ); | 487 | addFile( fi ); |
488 | 488 | ||
489 | ++it; | 489 | ++it; |
490 | } // of while loop | 490 | } // of while loop |
491 | m_view->sort(); | 491 | m_view->sort(); |
492 | 492 | ||
493 | } | 493 | } |
494 | int OFileViewFileListView::fileCount()const | 494 | int OFileViewFileListView::fileCount()const |
495 | { | 495 | { |
496 | return m_view->childCount(); | 496 | return m_view->childCount(); |
497 | } | 497 | } |
498 | 498 | ||
499 | QString OFileViewFileListView::currentDir()const | 499 | QString OFileViewFileListView::currentDir()const |
500 | { | 500 | { |
501 | return m_currentDir; | 501 | return m_currentDir; |
502 | } | 502 | } |
503 | 503 | ||
504 | OFileSelector* OFileViewFileListView::selector() | 504 | OFileSelector* OFileViewFileListView::selector() |
505 | { | 505 | { |
506 | return m_sel; | 506 | return m_sel; |
507 | } | 507 | } |
508 | 508 | ||
509 | bool OFileViewFileListView::eventFilter (QObject *o, QEvent *e) | 509 | bool OFileViewFileListView::eventFilter (QObject *o, QEvent *e) |
510 | { | 510 | { |
511 | if ( e->type() == QEvent::KeyPress ) | 511 | if ( e->type() == QEvent::KeyPress ) |
512 | { | 512 | { |
513 | QKeyEvent *k = (QKeyEvent *)e; | 513 | QKeyEvent *k = (QKeyEvent *)e; |
514 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) | 514 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) |
515 | { | 515 | { |
516 | slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); | 516 | slotClicked( Qt::LeftButton,m_view->currentItem(),QPoint(0,0),0); |
517 | return true; | 517 | return true; |
518 | } | 518 | } |
519 | } | 519 | } |
520 | return false; | 520 | return false; |
521 | } | 521 | } |
522 | 522 | ||
523 | void OFileViewFileListView::connectSlots() | 523 | void OFileViewFileListView::connectSlots() |
524 | { | 524 | { |
525 | connect(m_view, SIGNAL(clicked(QListViewItem*) ), | 525 | connect(m_view, SIGNAL(clicked(QListViewItem*) ), |
526 | this, SLOT(slotCurrentChanged(QListViewItem*) ) ); | 526 | this, SLOT(slotCurrentChanged(QListViewItem*) ) ); |
527 | connect(m_view, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint&, int ) ), | 527 | connect(m_view, SIGNAL(mouseButtonClicked(int,QListViewItem*,const QPoint&,int) ), |
528 | this, SLOT(slotClicked(int, QListViewItem*, const QPoint&, int ) ) ); | 528 | this, SLOT(slotClicked(int,QListViewItem*,const QPoint&,int) ) ); |
529 | } | 529 | } |
530 | 530 | ||
531 | void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) | 531 | void OFileViewFileListView::slotCurrentChanged( QListViewItem* item) |
532 | { | 532 | { |
533 | if (!item) | 533 | if (!item) |
534 | return; | 534 | return; |
535 | #if 0 | 535 | #if 0 |
536 | 536 | ||
537 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); | 537 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); |
538 | 538 | ||
539 | if (!sel->isDir() ) | 539 | if (!sel->isDir() ) |
540 | { | 540 | { |
541 | selector()->m_lneEdit->setText( sel->text(1) ); | 541 | selector()->m_lneEdit->setText( sel->text(1) ); |
542 | // if in fileselector mode we will emit selected | 542 | // if in fileselector mode we will emit selected |
543 | if ( selector()->mode() == OFileSelector::FileSelector ) | 543 | if ( selector()->mode() == OFileSelector::FileSelector ) |
544 | { | 544 | { |
545 | qWarning("slot Current Changed"); | 545 | qWarning("slot Current Changed"); |
546 | QStringList str = QStringList::split("->", sel->text(1) ); | 546 | QStringList str = QStringList::split("->", sel->text(1) ); |
547 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); | 547 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); |
548 | emit selector()->fileSelected( path ); | 548 | emit selector()->fileSelected( path ); |
549 | DocLnk lnk( path ); | 549 | DocLnk lnk( path ); |
550 | emit selector()->fileSelected( lnk ); | 550 | emit selector()->fileSelected( lnk ); |
551 | } | 551 | } |
552 | } | 552 | } |
553 | #endif | 553 | #endif |
554 | } | 554 | } |
555 | 555 | ||
556 | void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) | 556 | void OFileViewFileListView::slotClicked(int button , QListViewItem* item, const QPoint&, int ) |
557 | { | 557 | { |
558 | if (!item || ( button != Qt::LeftButton) ) | 558 | if (!item || ( button != Qt::LeftButton) ) |
559 | return; | 559 | return; |
560 | 560 | ||
561 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); | 561 | OFileSelectorItem *sel = static_cast<OFileSelectorItem*>(item); |
562 | if (!sel->isLocked() ) | 562 | if (!sel->isLocked() ) |
563 | { | 563 | { |
564 | QStringList str = QStringList::split("->", sel->text(1) ); | 564 | QStringList str = QStringList::split("->", sel->text(1) ); |
565 | if (sel->isDir() ) | 565 | if (sel->isDir() ) |
566 | { | 566 | { |
567 | m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); | 567 | m_currentDir = sel->directory() + "/" + str[0].stripWhiteSpace(); |
568 | emit selector()->dirSelected( m_currentDir ); | 568 | emit selector()->dirSelected( m_currentDir ); |
569 | reread( m_all ); | 569 | reread( m_all ); |
570 | } | 570 | } |
571 | else | 571 | else |
572 | { // file | 572 | { // file |
573 | qWarning("slot Clicked"); | 573 | qWarning("slot Clicked"); |
574 | selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); | 574 | selector()->m_lneEdit->setText( str[0].stripWhiteSpace() ); |
575 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); | 575 | QString path = sel->directory() + "/" + str[0].stripWhiteSpace(); |
576 | emit selector()->fileSelected( path ); | 576 | emit selector()->fileSelected( path ); |
577 | DocLnk lnk( path ); | 577 | DocLnk lnk( path ); |
578 | emit selector()->fileSelected( lnk ); | 578 | emit selector()->fileSelected( lnk ); |
579 | } | 579 | } |
580 | } // not locked | 580 | } // not locked |
581 | } | 581 | } |
582 | 582 | ||
583 | void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) | 583 | void OFileViewFileListView::addFile( QFileInfo* info, bool symlink ) |
584 | { | 584 | { |
585 | MimeType type( info->absFilePath() ); | 585 | MimeType type( info->absFilePath() ); |
586 | if (!compliesMime( type.id() ) ) | 586 | if (!compliesMime( type.id() ) ) |
587 | return; | 587 | return; |
588 | 588 | ||
589 | QPixmap pix = type.pixmap(); | 589 | QPixmap pix = type.pixmap(); |
590 | QString dir, name; bool locked; | 590 | QString dir, name; bool locked; |
591 | if ( pix.isNull() ) | 591 | if ( pix.isNull() ) |
592 | { | 592 | { |
593 | QWMatrix matrix; | 593 | QWMatrix matrix; |
594 | QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); | 594 | QPixmap pixer(Resource::loadPixmap("UnknownDocument") ); |
595 | matrix.scale( .4, .4 ); | 595 | matrix.scale( .4, .4 ); |
596 | pix = pixer.xForm( matrix ); | 596 | pix = pixer.xForm( matrix ); |
597 | } | 597 | } |
598 | dir = info->dirPath( true ); | 598 | dir = info->dirPath( true ); |
599 | locked = false; | 599 | locked = false; |
600 | if ( symlink ) | 600 | if ( symlink ) |
601 | name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); | 601 | name = info->fileName() + " -> " + info->dirPath() + "/" + info->readLink(); |
602 | else | 602 | else |
603 | { | 603 | { |
604 | name = info->fileName(); | 604 | name = info->fileName(); |
605 | if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || | 605 | if ( ( (selector()->mode() == OFileSelector::Open)&& !info->isReadable() ) || |
606 | ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) | 606 | ( (selector()->mode() == OFileSelector::Save)&& !info->isWritable() ) ) |
607 | { | 607 | { |
608 | locked = true; pix = Resource::loadPixmap("locked"); | 608 | locked = true; pix = Resource::loadPixmap("locked"); |
609 | } | 609 | } |
610 | } | 610 | } |
611 | (void)new OFileSelectorItem( m_view, pix, name, | 611 | (void)new OFileSelectorItem( m_view, pix, name, |
612 | info->lastModified().toString(), QString::number( info->size() ), | 612 | info->lastModified().toString(), QString::number( info->size() ), |
613 | dir, locked ); | 613 | dir, locked ); |
614 | } | 614 | } |
615 | 615 | ||
616 | void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) | 616 | void OFileViewFileListView::addDir( QFileInfo* info, bool symlink ) |
617 | { | 617 | { |
618 | bool locked = false; QString name; QPixmap pix; | 618 | bool locked = false; QString name; QPixmap pix; |
619 | 619 | ||
620 | if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || | 620 | if ( ( ( selector()->mode() == OFileSelector::Open ) && !info->isReadable() ) || |
621 | ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) | 621 | ( ( selector()->mode() == OFileSelector::Save ) && !info->isWritable() ) ) |
622 | { | 622 | { |
623 | locked = true; | 623 | locked = true; |
624 | if ( symlink ) | 624 | if ( symlink ) |
@@ -886,194 +886,194 @@ OFileSelector::OFileSelector( QWidget* parent, int mode, int sel, | |||
886 | * This a convience c'tor to just substitute the use of FileSelector | 886 | * This a convience c'tor to just substitute the use of FileSelector |
887 | */ | 887 | */ |
888 | OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name, | 888 | OFileSelector::OFileSelector( const QString& mimeFilter, QWidget* parent, const char* name, |
889 | bool showNew, bool showClose ) | 889 | bool showNew, bool showClose ) |
890 | : QWidget( parent, name ) | 890 | : QWidget( parent, name ) |
891 | { | 891 | { |
892 | m_current = 0; | 892 | m_current = 0; |
893 | m_shNew = showNew; | 893 | m_shNew = showNew; |
894 | m_shClose = showClose; | 894 | m_shClose = showClose; |
895 | m_startDir = QPEApplication::documentDir(); | 895 | m_startDir = QPEApplication::documentDir(); |
896 | 896 | ||
897 | if (!mimeFilter.isEmpty() ) | 897 | if (!mimeFilter.isEmpty() ) |
898 | m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) ); | 898 | m_mimeType.insert(mimeFilter, QStringList::split(";", mimeFilter ) ); |
899 | 899 | ||
900 | m_mode = OFileSelector::FileSelector; | 900 | m_mode = OFileSelector::FileSelector; |
901 | m_selector = OFileSelector::Normal; | 901 | m_selector = OFileSelector::Normal; |
902 | 902 | ||
903 | initUI(); | 903 | initUI(); |
904 | initMime(); | 904 | initMime(); |
905 | initViews(); | 905 | initViews(); |
906 | m_cmbView->setCurrentItem( 0 ); | 906 | m_cmbView->setCurrentItem( 0 ); |
907 | slotViewChange( QObject::tr("Documents") ); | 907 | slotViewChange( QObject::tr("Documents") ); |
908 | } | 908 | } |
909 | 909 | ||
910 | /* | 910 | /* |
911 | * INIT UI will set up the basic GUI | 911 | * INIT UI will set up the basic GUI |
912 | * Layout: Simple VBoxLayout | 912 | * Layout: Simple VBoxLayout |
913 | * On top a WidgetStack containing the Views... | 913 | * On top a WidgetStack containing the Views... |
914 | * - List View | 914 | * - List View |
915 | * - Document View | 915 | * - Document View |
916 | * Below we will have a Label + LineEdit | 916 | * Below we will have a Label + LineEdit |
917 | * Below we will have two ComoBoxes one for choosing the view one for | 917 | * Below we will have two ComoBoxes one for choosing the view one for |
918 | * choosing the mimetype | 918 | * choosing the mimetype |
919 | */ | 919 | */ |
920 | void OFileSelector::initUI() | 920 | void OFileSelector::initUI() |
921 | { | 921 | { |
922 | QVBoxLayout* lay = new QVBoxLayout( this ); | 922 | QVBoxLayout* lay = new QVBoxLayout( this ); |
923 | 923 | ||
924 | m_stack = new QWidgetStack( this ); | 924 | m_stack = new QWidgetStack( this ); |
925 | lay->addWidget( m_stack, 1000 ); | 925 | lay->addWidget( m_stack, 1000 ); |
926 | 926 | ||
927 | m_nameBox = new QHBox( this ); | 927 | m_nameBox = new QHBox( this ); |
928 | (void)new QLabel( tr("Name:"), m_nameBox ); | 928 | (void)new QLabel( tr("Name:"), m_nameBox ); |
929 | m_lneEdit = new QLineEdit( m_nameBox ); | 929 | m_lneEdit = new QLineEdit( m_nameBox ); |
930 | m_lneEdit ->installEventFilter(this); | 930 | m_lneEdit ->installEventFilter(this); |
931 | lay->addWidget( m_nameBox ); | 931 | lay->addWidget( m_nameBox ); |
932 | 932 | ||
933 | m_cmbBox = new QHBox( this ); | 933 | m_cmbBox = new QHBox( this ); |
934 | m_cmbView = new QComboBox( m_cmbBox ); | 934 | m_cmbView = new QComboBox( m_cmbBox ); |
935 | m_cmbMime = new QComboBox( m_cmbBox ); | 935 | m_cmbMime = new QComboBox( m_cmbBox ); |
936 | lay->addWidget( m_cmbBox ); | 936 | lay->addWidget( m_cmbBox ); |
937 | } | 937 | } |
938 | 938 | ||
939 | /* | 939 | /* |
940 | * This will make sure that the return key in the name edit causes dialogs to close | 940 | * This will make sure that the return key in the name edit causes dialogs to close |
941 | */ | 941 | */ |
942 | 942 | ||
943 | bool OFileSelector::eventFilter (QObject *o, QEvent *e) | 943 | bool OFileSelector::eventFilter (QObject *o, QEvent *e) |
944 | { | 944 | { |
945 | if ( e->type() == QEvent::KeyPress ) | 945 | if ( e->type() == QEvent::KeyPress ) |
946 | { | 946 | { |
947 | QKeyEvent *k = (QKeyEvent *)e; | 947 | QKeyEvent *k = (QKeyEvent *)e; |
948 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) | 948 | if ( (k->key()==Key_Enter) || (k->key()==Key_Return)) |
949 | { | 949 | { |
950 | emit ok(); | 950 | emit ok(); |
951 | return true; | 951 | return true; |
952 | } | 952 | } |
953 | } | 953 | } |
954 | return false; | 954 | return false; |
955 | } | 955 | } |
956 | 956 | ||
957 | /* | 957 | /* |
958 | * This will insert the MimeTypes into the Combo Box | 958 | * This will insert the MimeTypes into the Combo Box |
959 | * And also connect the changed signal | 959 | * And also connect the changed signal |
960 | * | 960 | * |
961 | * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes | 961 | * AutoMimeTyping is disabled for now. It used to reparse a dir and then set available mimetypes |
962 | */ | 962 | */ |
963 | void OFileSelector::initMime() | 963 | void OFileSelector::initMime() |
964 | { | 964 | { |
965 | MimeTypes::Iterator it; | 965 | MimeTypes::Iterator it; |
966 | for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) | 966 | for ( it = m_mimeType.begin(); it != m_mimeType.end(); ++it ) |
967 | { | 967 | { |
968 | m_cmbMime->insertItem( it.key() ); | 968 | m_cmbMime->insertItem( it.key() ); |
969 | } | 969 | } |
970 | m_cmbMime->setCurrentItem( 0 ); | 970 | m_cmbMime->setCurrentItem( 0 ); |
971 | 971 | ||
972 | connect( m_cmbMime, SIGNAL(activated(int) ), | 972 | connect( m_cmbMime, SIGNAL(activated(int) ), |
973 | this, SLOT(slotMimeTypeChanged() ) ); | 973 | this, SLOT(slotMimeTypeChanged() ) ); |
974 | 974 | ||
975 | } | 975 | } |
976 | 976 | ||
977 | void OFileSelector::initViews() | 977 | void OFileSelector::initViews() |
978 | { | 978 | { |
979 | m_cmbView->insertItem( QObject::tr("Documents") ); | 979 | m_cmbView->insertItem( QObject::tr("Documents") ); |
980 | m_cmbView->insertItem( QObject::tr("Files") ); | 980 | m_cmbView->insertItem( QObject::tr("Files") ); |
981 | m_cmbView->insertItem( QObject::tr("All Files") ); | 981 | m_cmbView->insertItem( QObject::tr("All Files") ); |
982 | connect(m_cmbView, SIGNAL(activated( const QString& ) ), | 982 | connect(m_cmbView, SIGNAL(activated(const QString&) ), |
983 | this, SLOT(slotViewChange( const QString& ) ) ); | 983 | this, SLOT(slotViewChange(const QString&) ) ); |
984 | 984 | ||
985 | 985 | ||
986 | m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) ); | 986 | m_views.insert( QObject::tr("Documents"), new ODocumentFileView(this) ); |
987 | 987 | ||
988 | /* see above why add both */ | 988 | /* see above why add both */ |
989 | OFileViewInterface* in = new OFileViewFileSystem( this ); | 989 | OFileViewInterface* in = new OFileViewFileSystem( this ); |
990 | m_views.insert( QObject::tr("Files"), in ); | 990 | m_views.insert( QObject::tr("Files"), in ); |
991 | m_views.insert( QObject::tr("All Files"), in ); | 991 | m_views.insert( QObject::tr("All Files"), in ); |
992 | } | 992 | } |
993 | 993 | ||
994 | /** | 994 | /** |
995 | * d'tor | 995 | * d'tor |
996 | */ | 996 | */ |
997 | OFileSelector::~OFileSelector() | 997 | OFileSelector::~OFileSelector() |
998 | { | 998 | { |
999 | } | 999 | } |
1000 | 1000 | ||
1001 | 1001 | ||
1002 | 1002 | ||
1003 | /** | 1003 | /** |
1004 | * Convience function for the fileselector | 1004 | * Convience function for the fileselector |
1005 | * make sure to delete the DocLnk | 1005 | * make sure to delete the DocLnk |
1006 | * | 1006 | * |
1007 | * @see DocLnk | 1007 | * @see DocLnk |
1008 | * @todo remove in ODP | 1008 | * @todo remove in ODP |
1009 | */ | 1009 | */ |
1010 | const DocLnk* OFileSelector::selected() | 1010 | const DocLnk* OFileSelector::selected() |
1011 | { | 1011 | { |
1012 | DocLnk* lnk = new DocLnk( currentView()->selectedDocument() ); | 1012 | DocLnk* lnk = new DocLnk( currentView()->selectedDocument() ); |
1013 | return lnk; | 1013 | return lnk; |
1014 | } | 1014 | } |
1015 | 1015 | ||
1016 | /** | 1016 | /** |
1017 | * | 1017 | * |
1018 | * @return the name of the selected file | 1018 | * @return the name of the selected file |
1019 | */ | 1019 | */ |
1020 | QString OFileSelector::selectedName()const | 1020 | QString OFileSelector::selectedName()const |
1021 | { | 1021 | { |
1022 | return currentView()->selectedName(); | 1022 | return currentView()->selectedName(); |
1023 | } | 1023 | } |
1024 | 1024 | ||
1025 | 1025 | ||
1026 | /** | 1026 | /** |
1027 | * @return the selected path | 1027 | * @return the selected path |
1028 | */ | 1028 | */ |
1029 | QString OFileSelector::selectedPath()const | 1029 | QString OFileSelector::selectedPath()const |
1030 | { | 1030 | { |
1031 | return currentView()->selectedPath(); | 1031 | return currentView()->selectedPath(); |
1032 | } | 1032 | } |
1033 | 1033 | ||
1034 | /** | 1034 | /** |
1035 | * @return the directory name | 1035 | * @return the directory name |
1036 | */ | 1036 | */ |
1037 | QString OFileSelector::directory()const | 1037 | QString OFileSelector::directory()const |
1038 | { | 1038 | { |
1039 | return currentView()->directory(); | 1039 | return currentView()->directory(); |
1040 | } | 1040 | } |
1041 | 1041 | ||
1042 | /** | 1042 | /** |
1043 | * @return a DocLnk for the selected document | 1043 | * @return a DocLnk for the selected document |
1044 | */ | 1044 | */ |
1045 | DocLnk OFileSelector::selectedDocument()const | 1045 | DocLnk OFileSelector::selectedDocument()const |
1046 | { | 1046 | { |
1047 | return currentView()->selectedDocument(); | 1047 | return currentView()->selectedDocument(); |
1048 | } | 1048 | } |
1049 | 1049 | ||
1050 | /** | 1050 | /** |
1051 | * @return the number of items for the current view | 1051 | * @return the number of items for the current view |
1052 | */ | 1052 | */ |
1053 | int OFileSelector::fileCount()const | 1053 | int OFileSelector::fileCount()const |
1054 | { | 1054 | { |
1055 | return currentView()->fileCount(); | 1055 | return currentView()->fileCount(); |
1056 | } | 1056 | } |
1057 | 1057 | ||
1058 | /** | 1058 | /** |
1059 | * @return reparse the file content | 1059 | * @return reparse the file content |
1060 | */ | 1060 | */ |
1061 | void OFileSelector::reread() | 1061 | void OFileSelector::reread() |
1062 | { | 1062 | { |
1063 | return currentView()->reread(); | 1063 | return currentView()->reread(); |
1064 | } | 1064 | } |
1065 | 1065 | ||
1066 | OFileViewInterface* OFileSelector::currentView()const | 1066 | OFileViewInterface* OFileSelector::currentView()const |
1067 | { | 1067 | { |
1068 | return m_current; | 1068 | return m_current; |
1069 | } | 1069 | } |
1070 | 1070 | ||
1071 | bool OFileSelector::showNew()const | 1071 | bool OFileSelector::showNew()const |
1072 | { | 1072 | { |
1073 | return m_shNew; | 1073 | return m_shNew; |
1074 | } | 1074 | } |
1075 | 1075 | ||
1076 | bool OFileSelector::showClose()const | 1076 | bool OFileSelector::showClose()const |
1077 | { | 1077 | { |
1078 | return m_shClose; | 1078 | return m_shClose; |
1079 | } | 1079 | } |
diff --git a/libopie2/opieui/ofontselector.cpp b/libopie2/opieui/ofontselector.cpp index 49ddeb6..f93781f 100644 --- a/libopie2/opieui/ofontselector.cpp +++ b/libopie2/opieui/ofontselector.cpp | |||
@@ -39,207 +39,207 @@ | |||
39 | #include <qmultilineedit.h> | 39 | #include <qmultilineedit.h> |
40 | 40 | ||
41 | using namespace Opie; | 41 | using namespace Opie; |
42 | 42 | ||
43 | namespace Opie | 43 | namespace Opie |
44 | { | 44 | { |
45 | 45 | ||
46 | class OFontSelectorPrivate | 46 | class OFontSelectorPrivate |
47 | { | 47 | { |
48 | public: | 48 | public: |
49 | QListBox * m_font_family_list; | 49 | QListBox * m_font_family_list; |
50 | QComboBox * m_font_style_list; | 50 | QComboBox * m_font_style_list; |
51 | QComboBox * m_font_size_list; | 51 | QComboBox * m_font_size_list; |
52 | QMultiLineEdit *m_preview; | 52 | QMultiLineEdit *m_preview; |
53 | 53 | ||
54 | bool m_pointbug : 1; | 54 | bool m_pointbug : 1; |
55 | 55 | ||
56 | FontDatabase m_fdb; | 56 | FontDatabase m_fdb; |
57 | }; | 57 | }; |
58 | 58 | ||
59 | }; | 59 | }; |
60 | 60 | ||
61 | namespace | 61 | namespace |
62 | { | 62 | { |
63 | 63 | ||
64 | class FontListItem : public QListBoxText | 64 | class FontListItem : public QListBoxText |
65 | { | 65 | { |
66 | public: | 66 | public: |
67 | FontListItem ( const QString &t, const QStringList &styles, const QValueList<int> &sizes ) : QListBoxText() | 67 | FontListItem ( const QString &t, const QStringList &styles, const QValueList<int> &sizes ) : QListBoxText() |
68 | { | 68 | { |
69 | m_name = t; | 69 | m_name = t; |
70 | m_styles = styles; | 70 | m_styles = styles; |
71 | m_sizes = sizes; | 71 | m_sizes = sizes; |
72 | 72 | ||
73 | QString str = t; | 73 | QString str = t; |
74 | str [0] = str [0]. upper(); | 74 | str [0] = str [0]. upper(); |
75 | setText ( str ); | 75 | setText ( str ); |
76 | } | 76 | } |
77 | 77 | ||
78 | QString family() const | 78 | QString family() const |
79 | { | 79 | { |
80 | return m_name; | 80 | return m_name; |
81 | } | 81 | } |
82 | 82 | ||
83 | const QStringList &styles() const | 83 | const QStringList &styles() const |
84 | { | 84 | { |
85 | return m_styles; | 85 | return m_styles; |
86 | } | 86 | } |
87 | 87 | ||
88 | const QValueList<int> &sizes() const | 88 | const QValueList<int> &sizes() const |
89 | { | 89 | { |
90 | return m_sizes; | 90 | return m_sizes; |
91 | } | 91 | } |
92 | 92 | ||
93 | private: | 93 | private: |
94 | QStringList m_styles; | 94 | QStringList m_styles; |
95 | QValueList<int> m_sizes; | 95 | QValueList<int> m_sizes; |
96 | QString m_name; | 96 | QString m_name; |
97 | }; | 97 | }; |
98 | 98 | ||
99 | 99 | ||
100 | static int findItemCB( QComboBox *box, const QString &str ) | 100 | static int findItemCB( QComboBox *box, const QString &str ) |
101 | { | 101 | { |
102 | for ( int i = 0; i < box->count(); i++ ) | 102 | for ( int i = 0; i < box->count(); i++ ) |
103 | { | 103 | { |
104 | if ( box->text ( i ) == str ) | 104 | if ( box->text ( i ) == str ) |
105 | return i; | 105 | return i; |
106 | } | 106 | } |
107 | return -1; | 107 | return -1; |
108 | } | 108 | } |
109 | 109 | ||
110 | } | 110 | } |
111 | /* static same as anon. namespace */ | 111 | /* static same as anon. namespace */ |
112 | static int qt_version() | 112 | static int qt_version() |
113 | { | 113 | { |
114 | const char *qver = qVersion(); | 114 | const char *qver = qVersion(); |
115 | 115 | ||
116 | return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); | 116 | return ( qver [0] - '0' ) * 100 + ( qver [2] - '0' ) * 10 + ( qver [4] - '0' ); |
117 | } | 117 | } |
118 | 118 | ||
119 | /** | 119 | /** |
120 | * Constructs the Selector object | 120 | * Constructs the Selector object |
121 | * @param withpreview If a font preview should be given | 121 | * @param withpreview If a font preview should be given |
122 | * @param parent The parent of the Font Selector | 122 | * @param parent The parent of the Font Selector |
123 | * @param name The name of the object | 123 | * @param name The name of the object |
124 | * @param fl WidgetFlags | 124 | * @param fl WidgetFlags |
125 | */ | 125 | */ |
126 | OFontSelector::OFontSelector( bool withpreview, QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl ) | 126 | OFontSelector::OFontSelector( bool withpreview, QWidget *parent, const char *name, WFlags fl ) : QWidget ( parent, name, fl ) |
127 | { | 127 | { |
128 | d = new OFontSelectorPrivate(); | 128 | d = new OFontSelectorPrivate(); |
129 | 129 | ||
130 | QGridLayout *gridLayout = new QGridLayout( this, 0, 0, 4, 4 ); | 130 | QGridLayout *gridLayout = new QGridLayout( this, 0, 0, 4, 4 ); |
131 | gridLayout->setRowStretch( 4, 10 ); | 131 | gridLayout->setRowStretch( 4, 10 ); |
132 | 132 | ||
133 | d->m_font_family_list = new QListBox( this, "FontListBox" ); | 133 | d->m_font_family_list = new QListBox( this, "FontListBox" ); |
134 | gridLayout->addMultiCellWidget( d->m_font_family_list, 0, 4, 0, 0 ); | 134 | gridLayout->addMultiCellWidget( d->m_font_family_list, 0, 4, 0, 0 ); |
135 | connect( d->m_font_family_list, SIGNAL( highlighted( int ) ), this, SLOT( fontFamilyClicked( int ) ) ); | 135 | connect( d->m_font_family_list, SIGNAL( highlighted(int) ), this, SLOT( fontFamilyClicked(int) ) ); |
136 | 136 | ||
137 | QLabel *label = new QLabel( tr( "Style" ), this ); | 137 | QLabel *label = new QLabel( tr( "Style" ), this ); |
138 | gridLayout->addWidget( label, 0, 1 ); | 138 | gridLayout->addWidget( label, 0, 1 ); |
139 | 139 | ||
140 | d->m_font_style_list = new QComboBox( this, "StyleListBox" ); | 140 | d->m_font_style_list = new QComboBox( this, "StyleListBox" ); |
141 | connect( d->m_font_style_list, SIGNAL( activated( int ) ), this, SLOT( fontStyleClicked( int ) ) ); | 141 | connect( d->m_font_style_list, SIGNAL( activated(int) ), this, SLOT( fontStyleClicked(int) ) ); |
142 | gridLayout->addWidget( d->m_font_style_list, 1, 1 ); | 142 | gridLayout->addWidget( d->m_font_style_list, 1, 1 ); |
143 | 143 | ||
144 | label = new QLabel( tr( "Size" ), this ); | 144 | label = new QLabel( tr( "Size" ), this ); |
145 | gridLayout->addWidget( label, 2, 1 ); | 145 | gridLayout->addWidget( label, 2, 1 ); |
146 | 146 | ||
147 | d->m_font_size_list = new QComboBox( this, "SizeListBox" ); | 147 | d->m_font_size_list = new QComboBox( this, "SizeListBox" ); |
148 | connect( d->m_font_size_list, SIGNAL( activated( int ) ), | 148 | connect( d->m_font_size_list, SIGNAL( activated(int) ), |
149 | this, SLOT( fontSizeClicked( int ) ) ); | 149 | this, SLOT( fontSizeClicked(int) ) ); |
150 | gridLayout->addWidget( d->m_font_size_list, 3, 1 ); | 150 | gridLayout->addWidget( d->m_font_size_list, 3, 1 ); |
151 | 151 | ||
152 | d->m_pointbug = ( qt_version() <= 233 ); | 152 | d->m_pointbug = ( qt_version() <= 233 ); |
153 | 153 | ||
154 | if ( withpreview ) | 154 | if ( withpreview ) |
155 | { | 155 | { |
156 | d->m_preview = new QMultiLineEdit ( this, "Preview" ); | 156 | d->m_preview = new QMultiLineEdit ( this, "Preview" ); |
157 | d->m_preview->setAlignment ( AlignCenter ); | 157 | d->m_preview->setAlignment ( AlignCenter ); |
158 | d->m_preview->setWordWrap ( QMultiLineEdit::WidgetWidth ); | 158 | d->m_preview->setWordWrap ( QMultiLineEdit::WidgetWidth ); |
159 | d->m_preview->setMargin ( 3 ); | 159 | d->m_preview->setMargin ( 3 ); |
160 | d->m_preview->setText ( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" )); | 160 | d->m_preview->setText ( tr( "The Quick Brown Fox Jumps Over The Lazy Dog" )); |
161 | gridLayout->addRowSpacing ( 5, 4 ); | 161 | gridLayout->addRowSpacing ( 5, 4 ); |
162 | gridLayout->addMultiCellWidget ( d->m_preview, 6, 6, 0, 1 ); | 162 | gridLayout->addMultiCellWidget ( d->m_preview, 6, 6, 0, 1 ); |
163 | gridLayout->setRowStretch ( 6, 5 ); | 163 | gridLayout->setRowStretch ( 6, 5 ); |
164 | } | 164 | } |
165 | else | 165 | else |
166 | d->m_preview = 0; | 166 | d->m_preview = 0; |
167 | 167 | ||
168 | loadFonts ( d->m_font_family_list ); | 168 | loadFonts ( d->m_font_family_list ); |
169 | } | 169 | } |
170 | 170 | ||
171 | OFontSelector::~OFontSelector() | 171 | OFontSelector::~OFontSelector() |
172 | { | 172 | { |
173 | delete d; | 173 | delete d; |
174 | } | 174 | } |
175 | 175 | ||
176 | /** | 176 | /** |
177 | * This methods tries to set the font | 177 | * This methods tries to set the font |
178 | * @param f The wishes font | 178 | * @param f The wishes font |
179 | * @return success or failure | 179 | * @return success or failure |
180 | */ | 180 | */ |
181 | bool OFontSelector::setSelectedFont ( const QFont &f ) | 181 | bool OFontSelector::setSelectedFont ( const QFont &f ) |
182 | { | 182 | { |
183 | return setSelectedFont ( f. family(), d->m_fdb. styleString ( f ), f. pointSize(), QFont::encodingName ( f. charSet())); | 183 | return setSelectedFont ( f. family(), d->m_fdb. styleString ( f ), f. pointSize(), QFont::encodingName ( f. charSet())); |
184 | } | 184 | } |
185 | 185 | ||
186 | 186 | ||
187 | /** | 187 | /** |
188 | * This is an overloaded method @see setSelectedFont | 188 | * This is an overloaded method @see setSelectedFont |
189 | * @param familyStr The family of the font | 189 | * @param familyStr The family of the font |
190 | * @param styleStr The style of the font | 190 | * @param styleStr The style of the font |
191 | * @param sizeVal The size of font | 191 | * @param sizeVal The size of font |
192 | * @param charset The charset to be used. Will be deprecated by QT3 | 192 | * @param charset The charset to be used. Will be deprecated by QT3 |
193 | */ | 193 | */ |
194 | bool OFontSelector::setSelectedFont( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & charset ) | 194 | bool OFontSelector::setSelectedFont( const QString &familyStr, const QString &styleStr, int sizeVal, const QString & charset ) |
195 | { | 195 | { |
196 | QString sizeStr = QString::number ( sizeVal ); | 196 | QString sizeStr = QString::number ( sizeVal ); |
197 | 197 | ||
198 | QListBoxItem *family = d->m_font_family_list->findItem ( familyStr ); | 198 | QListBoxItem *family = d->m_font_family_list->findItem ( familyStr ); |
199 | if ( !family ) | 199 | if ( !family ) |
200 | family = d->m_font_family_list->findItem ( "Helvetica" ); | 200 | family = d->m_font_family_list->findItem ( "Helvetica" ); |
201 | if ( !family ) | 201 | if ( !family ) |
202 | family = d->m_font_family_list->firstItem(); | 202 | family = d->m_font_family_list->firstItem(); |
203 | d->m_font_family_list->setCurrentItem ( family ); | 203 | d->m_font_family_list->setCurrentItem ( family ); |
204 | fontFamilyClicked ( d->m_font_family_list->index ( family )); | 204 | fontFamilyClicked ( d->m_font_family_list->index ( family )); |
205 | 205 | ||
206 | int style = findItemCB ( d->m_font_style_list, styleStr ); | 206 | int style = findItemCB ( d->m_font_style_list, styleStr ); |
207 | if ( style < 0 ) | 207 | if ( style < 0 ) |
208 | style = findItemCB ( d->m_font_style_list, "Regular" ); | 208 | style = findItemCB ( d->m_font_style_list, "Regular" ); |
209 | if ( style < 0 && d->m_font_style_list->count() > 0 ) | 209 | if ( style < 0 && d->m_font_style_list->count() > 0 ) |
210 | style = 0; | 210 | style = 0; |
211 | d->m_font_style_list->setCurrentItem ( style ); | 211 | d->m_font_style_list->setCurrentItem ( style ); |
212 | fontStyleClicked ( style ); | 212 | fontStyleClicked ( style ); |
213 | 213 | ||
214 | int size = findItemCB ( d->m_font_size_list, sizeStr ); | 214 | int size = findItemCB ( d->m_font_size_list, sizeStr ); |
215 | if ( size < 0 ) | 215 | if ( size < 0 ) |
216 | size = findItemCB ( d->m_font_size_list, "10" ); | 216 | size = findItemCB ( d->m_font_size_list, "10" ); |
217 | if ( size < 0 && d->m_font_size_list->count() > 0 ) | 217 | if ( size < 0 && d->m_font_size_list->count() > 0 ) |
218 | size = 0; | 218 | size = 0; |
219 | d->m_font_size_list->setCurrentItem ( size ); | 219 | d->m_font_size_list->setCurrentItem ( size ); |
220 | fontSizeClicked ( size ); | 220 | fontSizeClicked ( size ); |
221 | 221 | ||
222 | return (( family ) && ( style >= 0 ) && ( size >= 0 )); | 222 | return (( family ) && ( style >= 0 ) && ( size >= 0 )); |
223 | } | 223 | } |
224 | 224 | ||
225 | /** | 225 | /** |
226 | * This method returns the name, style and size of the currently selected | 226 | * This method returns the name, style and size of the currently selected |
227 | * font or false if no font is selected | 227 | * font or false if no font is selected |
228 | * @param family The font family will be written there | 228 | * @param family The font family will be written there |
229 | * @param style The style will be written there | 229 | * @param style The style will be written there |
230 | * @param size The size will be written there | 230 | * @param size The size will be written there |
231 | * @return success or failure | 231 | * @return success or failure |
232 | */ | 232 | */ |
233 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) | 233 | bool OFontSelector::selectedFont ( QString &family, QString &style, int &size ) |
234 | { | 234 | { |
235 | QString dummy; | 235 | QString dummy; |
236 | return selectedFont ( family, style, size, dummy ); | 236 | return selectedFont ( family, style, size, dummy ); |
237 | } | 237 | } |
238 | 238 | ||
239 | 239 | ||
240 | /** | 240 | /** |
241 | * This method does return the font family or QString::null if there is | 241 | * This method does return the font family or QString::null if there is |
242 | * no font item selected | 242 | * no font item selected |
243 | * @return the font family | 243 | * @return the font family |
244 | */ | 244 | */ |
245 | QString OFontSelector::fontFamily() const | 245 | QString OFontSelector::fontFamily() const |
diff --git a/libopie2/opieui/otabwidget.cpp b/libopie2/opieui/otabwidget.cpp index ec6af9d..f47c90b 100644 --- a/libopie2/opieui/otabwidget.cpp +++ b/libopie2/opieui/otabwidget.cpp | |||
@@ -1,177 +1,177 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | 3 | ||
4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> | 4 | Copyright (c) 2002 Dan Williams <williamsdr@acm.org> |
5 | =. | 5 | =. |
6 | .=l. | 6 | .=l. |
7 | .>+-= | 7 | .>+-= |
8 | _;:, .> :=|. This program is free software; you can | 8 | _;:, .> :=|. This program is free software; you can |
9 | .> <`_, > . <= redistribute it and/or modify it under | 9 | .> <`_, > . <= redistribute it and/or modify it under |
10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public | 10 | :`=1 )Y*s>-.-- : the terms of the GNU Library General Public |
11 | .="- .-=="i, .._ License as published by the Free Software | 11 | .="- .-=="i, .._ License as published by the Free Software |
12 | - . .-<_> .<> Foundation; either version 2 of the License, | 12 | - . .-<_> .<> Foundation; either version 2 of the License, |
13 | ._= =} : or (at your option) any later version. | 13 | ._= =} : or (at your option) any later version. |
14 | .%`+i> _;_. | 14 | .%`+i> _;_. |
15 | .i_,=:_. -<s. This program is distributed in the hope that | 15 | .i_,=:_. -<s. This program is distributed in the hope that |
16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 16 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
17 | : .. .:, . . . without even the implied warranty of | 17 | : .. .:, . . . without even the implied warranty of |
18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 18 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 19 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
20 | ..}^=.= = ; Library General Public License for more | 20 | ..}^=.= = ; Library General Public License for more |
21 | ++= -. .` .: details. | 21 | ++= -. .` .: details. |
22 | : = ...= . :.=- | 22 | : = ...= . :.=- |
23 | -. .:....=;==+<; You should have received a copy of the GNU | 23 | -. .:....=;==+<; You should have received a copy of the GNU |
24 | -_. . . )=. = Library General Public License along with | 24 | -_. . . )=. = Library General Public License along with |
25 | -- :-=` this library; see the file COPYING.LIB. | 25 | -- :-=` this library; see the file COPYING.LIB. |
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include <opie2/otabwidget.h> | 32 | #include <opie2/otabwidget.h> |
33 | 33 | ||
34 | /* OPIE */ | 34 | /* OPIE */ |
35 | #include <qpe/applnk.h> | 35 | #include <qpe/applnk.h> |
36 | #include <qpe/config.h> | 36 | #include <qpe/config.h> |
37 | #include <qpe/resource.h> | 37 | #include <qpe/resource.h> |
38 | #include <opie2/otabbar.h> | 38 | #include <opie2/otabbar.h> |
39 | 39 | ||
40 | /* QT */ | 40 | /* QT */ |
41 | #include <qcombobox.h> | 41 | #include <qcombobox.h> |
42 | #include <qwidgetstack.h> | 42 | #include <qwidgetstack.h> |
43 | 43 | ||
44 | using namespace Opie; | 44 | using namespace Opie; |
45 | 45 | ||
46 | OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPosition p ) | 46 | OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPosition p ) |
47 | : QWidget( parent, name ) | 47 | : QWidget( parent, name ) |
48 | { | 48 | { |
49 | if ( s == Global ) | 49 | if ( s == Global ) |
50 | { | 50 | { |
51 | Config config( "qpe" ); | 51 | Config config( "qpe" ); |
52 | config.setGroup( "Appearance" ); | 52 | config.setGroup( "Appearance" ); |
53 | s = ( TabStyle ) config.readNumEntry( "TabStyle", (int) IconTab ); | 53 | s = ( TabStyle ) config.readNumEntry( "TabStyle", (int) IconTab ); |
54 | if ( s <= Global || s > IconList) | 54 | if ( s <= Global || s > IconList) |
55 | { | 55 | { |
56 | s = IconTab; | 56 | s = IconTab; |
57 | } | 57 | } |
58 | QString pos = config.readEntry( "TabPosition", "Top"); | 58 | QString pos = config.readEntry( "TabPosition", "Top"); |
59 | if ( pos == "Bottom" ) | 59 | if ( pos == "Bottom" ) |
60 | { | 60 | { |
61 | p = Bottom; | 61 | p = Bottom; |
62 | } | 62 | } |
63 | else | 63 | else |
64 | { | 64 | { |
65 | p = Top; | 65 | p = Top; |
66 | } | 66 | } |
67 | } | 67 | } |
68 | 68 | ||
69 | widgetStack = new QWidgetStack( this, "widgetstack" ); | 69 | widgetStack = new QWidgetStack( this, "widgetstack" ); |
70 | widgetStack->setFrameStyle( QFrame::NoFrame ); | 70 | widgetStack->setFrameStyle( QFrame::NoFrame ); |
71 | widgetStack->setLineWidth( style().defaultFrameWidth() ); | 71 | widgetStack->setLineWidth( style().defaultFrameWidth() ); |
72 | 72 | ||
73 | tabBarStack = new QWidgetStack( this, "tabbarstack" ); | 73 | tabBarStack = new QWidgetStack( this, "tabbarstack" ); |
74 | 74 | ||
75 | tabBar = new OTabBar( tabBarStack, "tabbar" ); | 75 | tabBar = new OTabBar( tabBarStack, "tabbar" ); |
76 | tabBarStack->addWidget( tabBar, 0 ); | 76 | tabBarStack->addWidget( tabBar, 0 ); |
77 | connect( tabBar, SIGNAL( selected( int ) ), this, SLOT( slotTabBarSelected( int ) ) ); | 77 | connect( tabBar, SIGNAL( selected(int) ), this, SLOT( slotTabBarSelected(int) ) ); |
78 | 78 | ||
79 | tabList = new QComboBox( false, tabBarStack, "tablist" ); | 79 | tabList = new QComboBox( false, tabBarStack, "tablist" ); |
80 | tabBarStack->addWidget( tabList, 1 ); | 80 | tabBarStack->addWidget( tabList, 1 ); |
81 | connect( tabList, SIGNAL( activated( int ) ), this, SLOT( slotTabListSelected( int ) ) ); | 81 | connect( tabList, SIGNAL( activated(int) ), this, SLOT( slotTabListSelected(int) ) ); |
82 | 82 | ||
83 | tabBarPosition = p; | 83 | tabBarPosition = p; |
84 | setTabStyle( s ); | 84 | setTabStyle( s ); |
85 | setTabPosition( p ); | 85 | setTabPosition( p ); |
86 | 86 | ||
87 | currTab= 0x0; | 87 | currTab= 0x0; |
88 | } | 88 | } |
89 | 89 | ||
90 | OTabWidget::~OTabWidget() | 90 | OTabWidget::~OTabWidget() |
91 | {} | 91 | {} |
92 | 92 | ||
93 | void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &label ) | 93 | void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &label ) |
94 | { | 94 | { |
95 | QPixmap iconset = loadSmooth( icon ); | 95 | QPixmap iconset = loadSmooth( icon ); |
96 | 96 | ||
97 | QTab *tab = new QTab(); | 97 | QTab *tab = new QTab(); |
98 | if ( tabBarStyle == IconTab ) | 98 | if ( tabBarStyle == IconTab ) |
99 | { | 99 | { |
100 | tab->label = QString::null; | 100 | tab->label = QString::null; |
101 | } | 101 | } |
102 | else | 102 | else |
103 | { | 103 | { |
104 | tab->label = label; | 104 | tab->label = label; |
105 | } | 105 | } |
106 | if ( tabBarStyle == IconTab || tabBarStyle == IconList ) | 106 | if ( tabBarStyle == IconTab || tabBarStyle == IconList ) |
107 | { | 107 | { |
108 | tab->iconset = new QIconSet( iconset ); | 108 | tab->iconset = new QIconSet( iconset ); |
109 | } | 109 | } |
110 | int tabid = tabBar->addTab( tab ); | 110 | int tabid = tabBar->addTab( tab ); |
111 | 111 | ||
112 | if ( tabBarStyle == IconTab || tabBarStyle == IconList ) | 112 | if ( tabBarStyle == IconTab || tabBarStyle == IconList ) |
113 | { | 113 | { |
114 | tabList->insertItem( iconset, label, -1 ); | 114 | tabList->insertItem( iconset, label, -1 ); |
115 | } | 115 | } |
116 | else | 116 | else |
117 | { | 117 | { |
118 | tabList->insertItem( label ); | 118 | tabList->insertItem( label ); |
119 | } | 119 | } |
120 | 120 | ||
121 | widgetStack->addWidget( child, tabid ); | 121 | widgetStack->addWidget( child, tabid ); |
122 | widgetStack->raiseWidget( child ); | 122 | widgetStack->raiseWidget( child ); |
123 | widgetStack->setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); | 123 | widgetStack->setFrameStyle( QFrame::StyledPanel | QFrame::Raised ); |
124 | 124 | ||
125 | OTabInfo *tabinfo = new OTabInfo( tabid, child, icon, label ); | 125 | OTabInfo *tabinfo = new OTabInfo( tabid, child, icon, label ); |
126 | tabs.append( tabinfo ); | 126 | tabs.append( tabinfo ); |
127 | selectTab( tabinfo ); | 127 | selectTab( tabinfo ); |
128 | } | 128 | } |
129 | 129 | ||
130 | void OTabWidget::removePage( QWidget *childwidget ) | 130 | void OTabWidget::removePage( QWidget *childwidget ) |
131 | { | 131 | { |
132 | if ( childwidget ) | 132 | if ( childwidget ) |
133 | { | 133 | { |
134 | OTabInfo *tab = tabs.first(); | 134 | OTabInfo *tab = tabs.first(); |
135 | while ( tab && tab->control() != childwidget ) | 135 | while ( tab && tab->control() != childwidget ) |
136 | { | 136 | { |
137 | tab = tabs.next(); | 137 | tab = tabs.next(); |
138 | } | 138 | } |
139 | if ( tab && tab->control() == childwidget ) | 139 | if ( tab && tab->control() == childwidget ) |
140 | { | 140 | { |
141 | tabBar->setTabEnabled( tab->id(), FALSE ); | 141 | tabBar->setTabEnabled( tab->id(), FALSE ); |
142 | tabBar->removeTab( tabBar->tab( tab->id() ) ); | 142 | tabBar->removeTab( tabBar->tab( tab->id() ) ); |
143 | int i = 0; | 143 | int i = 0; |
144 | while ( i < tabList->count() && tabList->text( i ) != tab->label() ) | 144 | while ( i < tabList->count() && tabList->text( i ) != tab->label() ) |
145 | { | 145 | { |
146 | i++; | 146 | i++; |
147 | } | 147 | } |
148 | if ( tabList->text( i ) == tab->label() ) | 148 | if ( tabList->text( i ) == tab->label() ) |
149 | { | 149 | { |
150 | tabList->removeItem( i ); | 150 | tabList->removeItem( i ); |
151 | } | 151 | } |
152 | widgetStack->removeWidget( childwidget ); | 152 | widgetStack->removeWidget( childwidget ); |
153 | tabs.remove( tab ); | 153 | tabs.remove( tab ); |
154 | delete tab; | 154 | delete tab; |
155 | currTab = tabs.current(); | 155 | currTab = tabs.current(); |
156 | if ( !currTab ) | 156 | if ( !currTab ) |
157 | { | 157 | { |
158 | widgetStack->setFrameStyle( QFrame::NoFrame ); | 158 | widgetStack->setFrameStyle( QFrame::NoFrame ); |
159 | } | 159 | } |
160 | 160 | ||
161 | setUpLayout(); | 161 | setUpLayout(); |
162 | } | 162 | } |
163 | } | 163 | } |
164 | } | 164 | } |
165 | 165 | ||
166 | void OTabWidget::changeTab( QWidget *widget, const QString &iconset, const QString &label) | 166 | void OTabWidget::changeTab( QWidget *widget, const QString &iconset, const QString &label) |
167 | { | 167 | { |
168 | OTabInfo *currtab = tabs.first(); | 168 | OTabInfo *currtab = tabs.first(); |
169 | while ( currtab && currtab->control() != widget ) | 169 | while ( currtab && currtab->control() != widget ) |
170 | { | 170 | { |
171 | currtab = tabs.next(); | 171 | currtab = tabs.next(); |
172 | } | 172 | } |
173 | if ( currtab && currtab->control() == widget ) | 173 | if ( currtab && currtab->control() == widget ) |
174 | { | 174 | { |
175 | QTab *tab = tabBar->tab( currtab->id() ); | 175 | QTab *tab = tabBar->tab( currtab->id() ); |
176 | QPixmap icon( loadSmooth( iconset ) ); | 176 | QPixmap icon( loadSmooth( iconset ) ); |
177 | tab->setText( label ); | 177 | tab->setText( label ); |
diff --git a/libopie2/opieui/otimepicker.cpp b/libopie2/opieui/otimepicker.cpp index d4712a4..66f9ce0 100644 --- a/libopie2/opieui/otimepicker.cpp +++ b/libopie2/opieui/otimepicker.cpp | |||
@@ -128,165 +128,165 @@ void OTimePicker::slotHour(bool b) | |||
128 | void OTimePicker::slotMinute(bool b) | 128 | void OTimePicker::slotMinute(bool b) |
129 | { | 129 | { |
130 | 130 | ||
131 | OClickableLabel *r = (OClickableLabel *) sender(); | 131 | OClickableLabel *r = (OClickableLabel *) sender(); |
132 | 132 | ||
133 | if (b) | 133 | if (b) |
134 | { | 134 | { |
135 | QValueListIterator<OClickableLabel *> it; | 135 | QValueListIterator<OClickableLabel *> it; |
136 | for (it=minuteLst.begin(); it!=minuteLst.end(); it++) | 136 | for (it=minuteLst.begin(); it!=minuteLst.end(); it++) |
137 | { | 137 | { |
138 | if (*it != r) (*it)->setOn(false); | 138 | if (*it != r) (*it)->setOn(false); |
139 | else tm.setHMS(tm.hour(),(*it)->text().toInt(), 0); | 139 | else tm.setHMS(tm.hour(),(*it)->text().toInt(), 0); |
140 | } | 140 | } |
141 | emit timeChanged(tm); | 141 | emit timeChanged(tm); |
142 | } | 142 | } |
143 | else | 143 | else |
144 | { | 144 | { |
145 | r->setOn(true); | 145 | r->setOn(true); |
146 | } | 146 | } |
147 | 147 | ||
148 | } | 148 | } |
149 | 149 | ||
150 | /** | 150 | /** |
151 | * Method to set the time. No signal gets emitted during this method call | 151 | * Method to set the time. No signal gets emitted during this method call |
152 | * Minutes must be within 5 minutes step starting at 0 ( 0,5,10,15,20... ) | 152 | * Minutes must be within 5 minutes step starting at 0 ( 0,5,10,15,20... ) |
153 | * @param t The time to be set | 153 | * @param t The time to be set |
154 | */ | 154 | */ |
155 | void OTimePicker::setTime( const QTime& t) | 155 | void OTimePicker::setTime( const QTime& t) |
156 | { | 156 | { |
157 | setTime( t.hour(), t.minute() ); | 157 | setTime( t.hour(), t.minute() ); |
158 | } | 158 | } |
159 | 159 | ||
160 | /** | 160 | /** |
161 | * Method to set the time. No signal gets emitted during this method call | 161 | * Method to set the time. No signal gets emitted during this method call |
162 | * @param h The hour | 162 | * @param h The hour |
163 | * @param m The minute. Minutes need to set by 5 minute steps | 163 | * @param m The minute. Minutes need to set by 5 minute steps |
164 | */ | 164 | */ |
165 | void OTimePicker::setTime( int h, int m ) | 165 | void OTimePicker::setTime( int h, int m ) |
166 | { | 166 | { |
167 | setHour(h); | 167 | setHour(h); |
168 | setMinute(m); | 168 | setMinute(m); |
169 | } | 169 | } |
170 | 170 | ||
171 | /* | 171 | /* |
172 | * FIXME round minutes to the 5 minute arrangement -zecke | 172 | * FIXME round minutes to the 5 minute arrangement -zecke |
173 | */ | 173 | */ |
174 | /** | 174 | /** |
175 | * Method to set the minutes | 175 | * Method to set the minutes |
176 | * @param m minutes | 176 | * @param m minutes |
177 | */ | 177 | */ |
178 | void OTimePicker::setMinute(int m) | 178 | void OTimePicker::setMinute(int m) |
179 | { | 179 | { |
180 | 180 | ||
181 | QString minute; | 181 | QString minute; |
182 | minute.sprintf("%.2d",m); | 182 | minute.sprintf("%.2d",m); |
183 | 183 | ||
184 | QValueListIterator<OClickableLabel *> it; | 184 | QValueListIterator<OClickableLabel *> it; |
185 | for (it=minuteLst.begin(); it!=minuteLst.end(); it++) | 185 | for (it=minuteLst.begin(); it!=minuteLst.end(); it++) |
186 | { | 186 | { |
187 | if ((*it)->text() == minute) (*it)->setOn(true); | 187 | if ((*it)->text() == minute) (*it)->setOn(true); |
188 | else (*it)->setOn(false); | 188 | else (*it)->setOn(false); |
189 | } | 189 | } |
190 | 190 | ||
191 | tm.setHMS(tm.hour(),m,0); | 191 | tm.setHMS(tm.hour(),m,0); |
192 | } | 192 | } |
193 | 193 | ||
194 | /** | 194 | /** |
195 | * Method to set the hour | 195 | * Method to set the hour |
196 | */ | 196 | */ |
197 | void OTimePicker::setHour(int h) | 197 | void OTimePicker::setHour(int h) |
198 | { | 198 | { |
199 | 199 | ||
200 | QString hour; | 200 | QString hour; |
201 | hour.sprintf("%.2d",h); | 201 | hour.sprintf("%.2d",h); |
202 | 202 | ||
203 | QValueListIterator<OClickableLabel *> it; | 203 | QValueListIterator<OClickableLabel *> it; |
204 | for (it=hourLst.begin(); it!=hourLst.end(); it++) | 204 | for (it=hourLst.begin(); it!=hourLst.end(); it++) |
205 | { | 205 | { |
206 | if ((*it)->text() == hour) (*it)->setOn(true); | 206 | if ((*it)->text() == hour) (*it)->setOn(true); |
207 | else (*it)->setOn(false); | 207 | else (*it)->setOn(false); |
208 | } | 208 | } |
209 | tm.setHMS(h,tm.minute(),0); | 209 | tm.setHMS(h,tm.minute(),0); |
210 | } | 210 | } |
211 | 211 | ||
212 | 212 | ||
213 | /** | 213 | /** |
214 | * This is a modal Dialog. | 214 | * This is a modal Dialog. |
215 | * | 215 | * |
216 | * @param parent The parent widget | 216 | * @param parent The parent widget |
217 | * @param name The name of the object | 217 | * @param name The name of the object |
218 | * @param fl Possible window flags | 218 | * @param fl Possible window flags |
219 | */ | 219 | */ |
220 | OTimePickerDialog::OTimePickerDialog ( QWidget* parent, const char* name, WFlags fl ) | 220 | OTimePickerDialog::OTimePickerDialog ( QWidget* parent, const char* name, WFlags fl ) |
221 | : OTimePickerDialogBase (parent , name, true , fl) | 221 | : OTimePickerDialogBase (parent , name, true , fl) |
222 | { | 222 | { |
223 | 223 | ||
224 | connect ( m_timePicker, SIGNAL( timeChanged( const QTime& ) ), | 224 | connect ( m_timePicker, SIGNAL( timeChanged(const QTime&) ), |
225 | this, SLOT( setTime ( const QTime& ) ) ); | 225 | this, SLOT( setTime(const QTime&) ) ); |
226 | connect ( minuteField, SIGNAL( textChanged ( const QString& ) ), | 226 | connect ( minuteField, SIGNAL( textChanged(const QString&) ), |
227 | this, SLOT ( setMinute ( const QString& ) ) ); | 227 | this, SLOT ( setMinute(const QString&) ) ); |
228 | connect ( hourField, SIGNAL( textChanged ( const QString& ) ), | 228 | connect ( hourField, SIGNAL( textChanged(const QString&) ), |
229 | this, SLOT ( setHour ( const QString& ) ) ); | 229 | this, SLOT ( setHour(const QString&) ) ); |
230 | 230 | ||
231 | } | 231 | } |
232 | 232 | ||
233 | /** | 233 | /** |
234 | * @return the time | 234 | * @return the time |
235 | */ | 235 | */ |
236 | QTime OTimePickerDialog::time()const | 236 | QTime OTimePickerDialog::time()const |
237 | { | 237 | { |
238 | return m_time; | 238 | return m_time; |
239 | } | 239 | } |
240 | 240 | ||
241 | /** | 241 | /** |
242 | * Set the time to time | 242 | * Set the time to time |
243 | * @param time The time to be set | 243 | * @param time The time to be set |
244 | */ | 244 | */ |
245 | void OTimePickerDialog::setTime( const QTime& time ) | 245 | void OTimePickerDialog::setTime( const QTime& time ) |
246 | { | 246 | { |
247 | m_time = time; | 247 | m_time = time; |
248 | 248 | ||
249 | m_timePicker->setHour ( time.hour() ); | 249 | m_timePicker->setHour ( time.hour() ); |
250 | m_timePicker->setMinute( time.minute() ); | 250 | m_timePicker->setMinute( time.minute() ); |
251 | 251 | ||
252 | // Set Textfields | 252 | // Set Textfields |
253 | if ( time.hour() < 10 ) | 253 | if ( time.hour() < 10 ) |
254 | hourField->setText( "0" + QString::number( time.hour() ) ); | 254 | hourField->setText( "0" + QString::number( time.hour() ) ); |
255 | else | 255 | else |
256 | hourField->setText( QString::number( time.hour() ) ); | 256 | hourField->setText( QString::number( time.hour() ) ); |
257 | 257 | ||
258 | if ( time.minute() < 10 ) | 258 | if ( time.minute() < 10 ) |
259 | minuteField->setText( "0" + QString::number( time.minute() ) ); | 259 | minuteField->setText( "0" + QString::number( time.minute() ) ); |
260 | else | 260 | else |
261 | minuteField->setText( QString::number( time.minute() ) ); | 261 | minuteField->setText( QString::number( time.minute() ) ); |
262 | 262 | ||
263 | } | 263 | } |
264 | 264 | ||
265 | /** | 265 | /** |
266 | * This method takes the current minute and tries to set hour | 266 | * This method takes the current minute and tries to set hour |
267 | * to hour. This succeeds if the resulting date is valid | 267 | * to hour. This succeeds if the resulting date is valid |
268 | * @param hour The hour as a string | 268 | * @param hour The hour as a string |
269 | */ | 269 | */ |
270 | void OTimePickerDialog::setHour ( const QString& hour ) | 270 | void OTimePickerDialog::setHour ( const QString& hour ) |
271 | { | 271 | { |
272 | if ( QTime::isValid ( hour.toInt(), m_time.minute() , 00 ) ) | 272 | if ( QTime::isValid ( hour.toInt(), m_time.minute() , 00 ) ) |
273 | { | 273 | { |
274 | m_time.setHMS ( hour.toInt(), m_time.minute() , 00 ); | 274 | m_time.setHMS ( hour.toInt(), m_time.minute() , 00 ); |
275 | setTime ( m_time ); | 275 | setTime ( m_time ); |
276 | } | 276 | } |
277 | 277 | ||
278 | } | 278 | } |
279 | 279 | ||
280 | /** | 280 | /** |
281 | * Method to set a new minute. It tries to convert the string to int and | 281 | * Method to set a new minute. It tries to convert the string to int and |
282 | * if the resulting date is valid a new date is set. | 282 | * if the resulting date is valid a new date is set. |
283 | * @see setHour | 283 | * @see setHour |
284 | */ | 284 | */ |
285 | void OTimePickerDialog::setMinute ( const QString& minute ) | 285 | void OTimePickerDialog::setMinute ( const QString& minute ) |
286 | { | 286 | { |
287 | if ( QTime::isValid ( m_time.hour(), minute.toInt(), 00 ) ) | 287 | if ( QTime::isValid ( m_time.hour(), minute.toInt(), 00 ) ) |
288 | { | 288 | { |
289 | m_time.setHMS ( m_time.hour(), minute.toInt(), 00 ); | 289 | m_time.setHMS ( m_time.hour(), minute.toInt(), 00 ); |
290 | setTime ( m_time ); | 290 | setTime ( m_time ); |
291 | } | 291 | } |
292 | } | 292 | } |
diff --git a/libopie2/opieui/oversatileview.cpp b/libopie2/opieui/oversatileview.cpp index 8839456..78154b7 100644 --- a/libopie2/opieui/oversatileview.cpp +++ b/libopie2/opieui/oversatileview.cpp | |||
@@ -77,238 +77,238 @@ static const char * view_icon_xpm[] = { | |||
77 | " "}; | 77 | " "}; |
78 | 78 | ||
79 | /* XPM */ | 79 | /* XPM */ |
80 | static const char * view_tree_xpm[] = { | 80 | static const char * view_tree_xpm[] = { |
81 | "16 16 17 1", | 81 | "16 16 17 1", |
82 | " c None", | 82 | " c None", |
83 | ".c #3A3A3A", | 83 | ".c #3A3A3A", |
84 | "+c #87BD88", | 84 | "+c #87BD88", |
85 | "@c #8BBE8B", | 85 | "@c #8BBE8B", |
86 | "#c #81BA81", | 86 | "#c #81BA81", |
87 | "$c #6DAF6D", | 87 | "$c #6DAF6D", |
88 | "%c #87BD87", | 88 | "%c #87BD87", |
89 | "&c #FCFDFC", | 89 | "&c #FCFDFC", |
90 | "*c #AED0AE", | 90 | "*c #AED0AE", |
91 | "=c #4E9C4C", | 91 | "=c #4E9C4C", |
92 | "-c #91BD91", | 92 | "-c #91BD91", |
93 | ";c #72B172", | 93 | ";c #72B172", |
94 | ">c #448643", | 94 | ">c #448643", |
95 | ",c #686868", | 95 | ",c #686868", |
96 | "'c #519F50", | 96 | "'c #519F50", |
97 | ")c #499247", | 97 | ")c #499247", |
98 | "!c #356A35", | 98 | "!c #356A35", |
99 | " . ", | 99 | " . ", |
100 | " . ", | 100 | " . ", |
101 | " . +@#$ ", | 101 | " . +@#$ ", |
102 | " . %&*= ", | 102 | " . %&*= ", |
103 | " .. #-;> ,, ,,,", | 103 | " .. #-;> ,, ,,,", |
104 | " . $')! ", | 104 | " . $')! ", |
105 | " . ", | 105 | " . ", |
106 | " . ", | 106 | " . ", |
107 | " . ", | 107 | " . ", |
108 | " . +@#$ ", | 108 | " . +@#$ ", |
109 | " . %&*= ", | 109 | " . %&*= ", |
110 | " .. #-;> ,, ,,,", | 110 | " .. #-;> ,, ,,,", |
111 | " $')! ", | 111 | " $')! ", |
112 | " ", | 112 | " ", |
113 | " ", | 113 | " ", |
114 | " "}; | 114 | " "}; |
115 | 115 | ||
116 | OVersatileView::OVersatileView( QWidget* parent, const char* name, int mode ) | 116 | OVersatileView::OVersatileView( QWidget* parent, const char* name, int mode ) |
117 | :QWidgetStack( parent, name ), | 117 | :QWidgetStack( parent, name ), |
118 | _viewmode( mode ), _warningpolicy( None ), | 118 | _viewmode( mode ), _warningpolicy( None ), |
119 | _treeleaf(), _treeopened(), _treeclosed(), | 119 | _treeleaf(), _treeopened(), _treeclosed(), |
120 | _iconleaf(), _iconopened(), _iconclosed() | 120 | _iconleaf(), _iconopened(), _iconclosed() |
121 | { | 121 | { |
122 | // | 122 | // |
123 | // Create child widgets and set some reasonable default styles | 123 | // Create child widgets and set some reasonable default styles |
124 | // | 124 | // |
125 | 125 | ||
126 | _listview = new OListView( this, "oversatileview embedded listview" ); | 126 | _listview = new OListView( this, "oversatileview embedded listview" ); |
127 | _iconview = new QIconView( this, "oversatileview embedded iconview" ); | 127 | _iconview = new QIconView( this, "oversatileview embedded iconview" ); |
128 | 128 | ||
129 | _listview->setAllColumnsShowFocus( true ); | 129 | _listview->setAllColumnsShowFocus( true ); |
130 | _listview->setRootIsDecorated( true ); | 130 | _listview->setRootIsDecorated( true ); |
131 | _listview->setShowSortIndicator( true ); | 131 | _listview->setShowSortIndicator( true ); |
132 | _iconview->setGridX( 90 ); | 132 | _iconview->setGridX( 90 ); |
133 | _iconview->setGridY( 42 ); | 133 | _iconview->setGridY( 42 ); |
134 | _iconview->setAutoArrange( true ); | 134 | _iconview->setAutoArrange( true ); |
135 | 135 | ||
136 | #ifdef QWS // TODO: Let this depend on current geometry (rotation) | 136 | #ifdef QWS // TODO: Let this depend on current geometry (rotation) |
137 | _iconview->setArrangement( QIconView::TopToBottom ); | 137 | _iconview->setArrangement( QIconView::TopToBottom ); |
138 | #else | 138 | #else |
139 | _iconview->setArrangement( QIconView::LeftToRight ); | 139 | _iconview->setArrangement( QIconView::LeftToRight ); |
140 | #endif | 140 | #endif |
141 | 141 | ||
142 | _iconview->setResizeMode( QIconView::Adjust ); | 142 | _iconview->setResizeMode( QIconView::Adjust ); |
143 | 143 | ||
144 | // qt-embedded: map stylus right on hold to right button press | 144 | // qt-embedded: map stylus right on hold to right button press |
145 | 145 | ||
146 | #ifdef QWS | 146 | #ifdef QWS |
147 | ( (QPEApplication*) qApp)->setStylusOperation( _iconview->viewport(), QPEApplication::RightOnHold ); | 147 | ( (QPEApplication*) qApp)->setStylusOperation( _iconview->viewport(), QPEApplication::RightOnHold ); |
148 | ( (QPEApplication*) qApp)->setStylusOperation( _listview->viewport(), QPEApplication::RightOnHold ); | 148 | ( (QPEApplication*) qApp)->setStylusOperation( _listview->viewport(), QPEApplication::RightOnHold ); |
149 | #endif | 149 | #endif |
150 | 150 | ||
151 | setViewMode( mode ); // TODO: Read last style from config | 151 | setViewMode( mode ); // TODO: Read last style from config |
152 | // setSynchronization( true ); // TODO: Implement this | 152 | // setSynchronization( true ); // TODO: Implement this |
153 | 153 | ||
154 | // create context menu allowing to switch between the views | 154 | // create context menu allowing to switch between the views |
155 | 155 | ||
156 | _contextmenu = new QPopupMenu( 0, "oversatileview contextmenu" ); | 156 | _contextmenu = new QPopupMenu( 0, "oversatileview contextmenu" ); |
157 | _contextmenu->setCaption( "Style" ); | 157 | _contextmenu->setCaption( "Style" ); |
158 | _contextmenu->setCheckable( true ); | 158 | _contextmenu->setCheckable( true ); |
159 | QActionGroup* ag = new QActionGroup( _contextmenu, "style option group" ); | 159 | QActionGroup* ag = new QActionGroup( _contextmenu, "style option group" ); |
160 | QAction* a1 = new QAction( "View Items in Icon Style", QIconSet( QPixmap( view_icon_xpm ) ), | 160 | QAction* a1 = new QAction( "View Items in Icon Style", QIconSet( QPixmap( view_icon_xpm ) ), |
161 | "View Icons", 0, ag, "viewicon action", true ); | 161 | "View Icons", 0, ag, "viewicon action", true ); |
162 | QAction* a2 = new QAction( "View Items in Tree Style", QIconSet( QPixmap( view_tree_xpm ) ), | 162 | QAction* a2 = new QAction( "View Items in Tree Style", QIconSet( QPixmap( view_tree_xpm ) ), |
163 | "View Tree", 0, ag, "viewtree action", true ); | 163 | "View Tree", 0, ag, "viewtree action", true ); |
164 | ag->addTo( _contextmenu ); | 164 | ag->addTo( _contextmenu ); |
165 | if ( mode == Icons ) | 165 | if ( mode == Icons ) |
166 | a1->setOn( true ); | 166 | a1->setOn( true ); |
167 | else if ( mode == Tree ) | 167 | else if ( mode == Tree ) |
168 | a2->setOn( true ); | 168 | a2->setOn( true ); |
169 | connect( a1, SIGNAL( activated() ), this, SLOT( setIconViewMode() ) ); | 169 | connect( a1, SIGNAL( activated() ), this, SLOT( setIconViewMode() ) ); |
170 | connect( a2, SIGNAL( activated() ), this, SLOT( setTreeViewMode() ) ); | 170 | connect( a2, SIGNAL( activated() ), this, SLOT( setTreeViewMode() ) ); |
171 | 171 | ||
172 | #if (QT_VERSION >= 0x030000) | 172 | #if (QT_VERSION >= 0x030000) |
173 | connect( _listview, SIGNAL( contextMenuRequested( QListViewItem*, const QPoint&, int ) ), this, SLOT( contextMenuRequested( QListViewItem*, const QPoint&, int ) ) ); | 173 | connect( _listview, SIGNAL( contextMenuRequested(QListViewItem*,const QPoint&,int) ), this, SLOT( contextMenuRequested(QListViewItem*,const QPoint&,int) ) ); |
174 | connect( _iconview, SIGNAL( contextMenuRequested( QIconViewItem*, const QPoint& ) ), this, SLOT( contextMenuRequested( QIconViewItem*, const QPoint& ) ) ); | 174 | connect( _iconview, SIGNAL( contextMenuRequested(QIconViewItem*,const QPoint&) ), this, SLOT( contextMenuRequested(QIconViewItem*,const QPoint&) ) ); |
175 | #else | 175 | #else |
176 | connect( _listview, SIGNAL( rightButtonPressed( QListViewItem*, const QPoint&, int ) ), this, SLOT( contextMenuRequested( QListViewItem*, const QPoint&, int ) ) ); | 176 | connect( _listview, SIGNAL( rightButtonPressed(QListViewItem*,const QPoint&,int) ), this, SLOT( contextMenuRequested(QListViewItem*,const QPoint&,int) ) ); |
177 | connect( _iconview, SIGNAL( rightButtonPressed( QIconViewItem*, const QPoint& ) ), this, SLOT( contextMenuRequested( QIconViewItem*, const QPoint& ) ) ); | 177 | connect( _iconview, SIGNAL( rightButtonPressed(QIconViewItem*,const QPoint&) ), this, SLOT( contextMenuRequested(QIconViewItem*,const QPoint&) ) ); |
178 | #endif | 178 | #endif |
179 | 179 | ||
180 | // | 180 | // |
181 | // signal forwarders | 181 | // signal forwarders |
182 | // | 182 | // |
183 | // unfortunately we can't short-circuit all the QListView and QIconView signals | 183 | // unfortunately we can't short-circuit all the QListView and QIconView signals |
184 | // to OVersatileView signals, because the signal/slot mechanism doesn't allow | 184 | // to OVersatileView signals, because the signal/slot mechanism doesn't allow |
185 | // type-conversion :-( | 185 | // type-conversion :-( |
186 | 186 | ||
187 | // common signals for listview | 187 | // common signals for listview |
188 | 188 | ||
189 | connect( _listview, SIGNAL( selectionChanged() ), this, SIGNAL( selectionChanged() ) ); | 189 | connect( _listview, SIGNAL( selectionChanged() ), this, SIGNAL( selectionChanged() ) ); |
190 | connect( _listview, SIGNAL( selectionChanged( QListViewItem * ) ), this, SLOT( selectionChanged( QListViewItem * ) ) ); | 190 | connect( _listview, SIGNAL( selectionChanged(QListViewItem*) ), this, SLOT( selectionChanged(QListViewItem*) ) ); |
191 | connect( _listview, SIGNAL( currentChanged( QListViewItem * ) ), this, SLOT( currentChanged( QListViewItem * ) ) ); | 191 | connect( _listview, SIGNAL( currentChanged(QListViewItem*) ), this, SLOT( currentChanged(QListViewItem*) ) ); |
192 | connect( _listview, SIGNAL( clicked( QListViewItem * ) ), this, SLOT( clicked( QListViewItem * ) ) ); | 192 | connect( _listview, SIGNAL( clicked(QListViewItem*) ), this, SLOT( clicked(QListViewItem*) ) ); |
193 | connect( _listview, SIGNAL( pressed( QListViewItem * ) ), this, SLOT( pressed( QListViewItem * ) ) ); | 193 | connect( _listview, SIGNAL( pressed(QListViewItem*) ), this, SLOT( pressed(QListViewItem*) ) ); |
194 | 194 | ||
195 | connect( _listview, SIGNAL( doubleClicked( QListViewItem * ) ), this, SLOT( doubleClicked( QListViewItem * ) ) ); | 195 | connect( _listview, SIGNAL( doubleClicked(QListViewItem*) ), this, SLOT( doubleClicked(QListViewItem*) ) ); |
196 | connect( _listview, SIGNAL( returnPressed( QListViewItem * ) ), this, SLOT( returnPressed( QListViewItem * ) ) ); | 196 | connect( _listview, SIGNAL( returnPressed(QListViewItem*) ), this, SLOT( returnPressed(QListViewItem*) ) ); |
197 | 197 | ||
198 | connect( _listview, SIGNAL( onItem( QListViewItem * ) ), this, SLOT( onItem( QListViewItem * ) ) ); | 198 | connect( _listview, SIGNAL( onItem(QListViewItem*) ), this, SLOT( onItem(QListViewItem*) ) ); |
199 | connect( _listview, SIGNAL( onViewport() ), this, SIGNAL( onViewport() ) ); | 199 | connect( _listview, SIGNAL( onViewport() ), this, SIGNAL( onViewport() ) ); |
200 | 200 | ||
201 | // common signals for iconview | 201 | // common signals for iconview |
202 | 202 | ||
203 | connect( _iconview, SIGNAL( selectionChanged() ), this, SIGNAL( selectionChanged() ) ); | 203 | connect( _iconview, SIGNAL( selectionChanged() ), this, SIGNAL( selectionChanged() ) ); |
204 | connect( _iconview, SIGNAL( selectionChanged( QIconViewItem * ) ), this, SLOT( selectionChanged( QIconViewItem * ) ) ); | 204 | connect( _iconview, SIGNAL( selectionChanged(QIconViewItem*) ), this, SLOT( selectionChanged(QIconViewItem*) ) ); |
205 | connect( _iconview, SIGNAL( currentChanged( QIconViewItem * ) ), this, SLOT( currentChanged( QIconViewItem * ) ) ); | 205 | connect( _iconview, SIGNAL( currentChanged(QIconViewItem*) ), this, SLOT( currentChanged(QIconViewItem*) ) ); |
206 | connect( _iconview, SIGNAL( clicked( QIconViewItem * ) ), this, SLOT( clicked( QIconViewItem * ) ) ); | 206 | connect( _iconview, SIGNAL( clicked(QIconViewItem*) ), this, SLOT( clicked(QIconViewItem*) ) ); |
207 | connect( _iconview, SIGNAL( pressed( QIconViewItem * ) ), this, SLOT( pressed( QIconViewItem * ) ) ); | 207 | connect( _iconview, SIGNAL( pressed(QIconViewItem*) ), this, SLOT( pressed(QIconViewItem*) ) ); |
208 | 208 | ||
209 | connect( _iconview, SIGNAL( doubleClicked( QIconViewItem * ) ), this, SLOT( doubleClicked( QIconViewItem * ) ) ); | 209 | connect( _iconview, SIGNAL( doubleClicked(QIconViewItem*) ), this, SLOT( doubleClicked(QIconViewItem*) ) ); |
210 | connect( _iconview, SIGNAL( returnPressed( QIconViewItem * ) ), this, SLOT( returnPressed( QIconViewItem * ) ) ); | 210 | connect( _iconview, SIGNAL( returnPressed(QIconViewItem*) ), this, SLOT( returnPressed(QIconViewItem*) ) ); |
211 | 211 | ||
212 | connect( _iconview, SIGNAL( onItem( QIconViewItem * ) ), this, SLOT( onItem( QIconViewItem * ) ) ); | 212 | connect( _iconview, SIGNAL( onItem(QIconViewItem*) ), this, SLOT( onItem(QIconViewItem*) ) ); |
213 | connect( _iconview, SIGNAL( onViewport() ), this, SIGNAL( onViewport() ) ); | 213 | connect( _iconview, SIGNAL( onViewport() ), this, SIGNAL( onViewport() ) ); |
214 | 214 | ||
215 | // listview only signals | 215 | // listview only signals |
216 | 216 | ||
217 | connect( _listview, SIGNAL( expanded( QListViewItem * ) ), this, SLOT( expanded( QListViewItem * ) ) ); | 217 | connect( _listview, SIGNAL( expanded(QListViewItem*) ), this, SLOT( expanded(QListViewItem*) ) ); |
218 | connect( _listview, SIGNAL( collapsed( QListViewItem * ) ), this, SLOT( collapsed( QListViewItem * ) ) ); | 218 | connect( _listview, SIGNAL( collapsed(QListViewItem*) ), this, SLOT( collapsed(QListViewItem*) ) ); |
219 | 219 | ||
220 | // iconview only signals | 220 | // iconview only signals |
221 | 221 | ||
222 | connect( _iconview, SIGNAL( moved() ), this, SIGNAL( moved() ) ); | 222 | connect( _iconview, SIGNAL( moved() ), this, SIGNAL( moved() ) ); |
223 | } | 223 | } |
224 | 224 | ||
225 | OVersatileView::~OVersatileView() | 225 | OVersatileView::~OVersatileView() |
226 | { | 226 | { |
227 | } | 227 | } |
228 | 228 | ||
229 | QPopupMenu* OVersatileView::contextMenu() const | 229 | QPopupMenu* OVersatileView::contextMenu() const |
230 | { | 230 | { |
231 | return _contextmenu; | 231 | return _contextmenu; |
232 | } | 232 | } |
233 | 233 | ||
234 | void OVersatileView::contextMenuRequested( QListViewItem* item, const QPoint& pos, int col ) | 234 | void OVersatileView::contextMenuRequested( QListViewItem* item, const QPoint& pos, int col ) |
235 | { | 235 | { |
236 | // can't use QObject::inherits here, because ListViewItems, beit Q, O or K, | 236 | // can't use QObject::inherits here, because ListViewItems, beit Q, O or K, |
237 | // do not inherit from QObject - assuming here the programmer is | 237 | // do not inherit from QObject - assuming here the programmer is |
238 | // disciplined enough to only add OVersatileViewItems to an OVersatileView | 238 | // disciplined enough to only add OVersatileViewItems to an OVersatileView |
239 | popupContextMenu( static_cast<OVersatileViewItem*>( item ), pos, col ); | 239 | popupContextMenu( static_cast<OVersatileViewItem*>( item ), pos, col ); |
240 | } | 240 | } |
241 | 241 | ||
242 | void OVersatileView::contextMenuRequested( QIconViewItem* item, const QPoint& pos ) | 242 | void OVersatileView::contextMenuRequested( QIconViewItem* item, const QPoint& pos ) |
243 | { | 243 | { |
244 | // see above | 244 | // see above |
245 | popupContextMenu( static_cast<OVersatileViewItem*>( item ), pos, -1 ); | 245 | popupContextMenu( static_cast<OVersatileViewItem*>( item ), pos, -1 ); |
246 | } | 246 | } |
247 | 247 | ||
248 | void OVersatileView::popupContextMenu( OVersatileViewItem* item, const QPoint& pos, int col ) | 248 | void OVersatileView::popupContextMenu( OVersatileViewItem* item, const QPoint& pos, int col ) |
249 | { | 249 | { |
250 | if ( !item ) | 250 | if ( !item ) |
251 | _contextmenu->exec( pos ); | 251 | _contextmenu->exec( pos ); |
252 | else | 252 | else |
253 | emit( contextMenuRequested( item, pos, col ) ); | 253 | emit( contextMenuRequested( item, pos, col ) ); |
254 | } | 254 | } |
255 | 255 | ||
256 | void OVersatileView::setSynchronization( bool sync ) | 256 | void OVersatileView::setSynchronization( bool sync ) |
257 | { | 257 | { |
258 | _synchronization = sync; | 258 | _synchronization = sync; |
259 | } | 259 | } |
260 | 260 | ||
261 | bool OVersatileView::synchronization() | 261 | bool OVersatileView::synchronization() |
262 | { | 262 | { |
263 | return _synchronization; | 263 | return _synchronization; |
264 | } | 264 | } |
265 | 265 | ||
266 | void OVersatileView::setDefaultPixmaps( int mode, QPixmap& leaf, QPixmap& opened, QPixmap& closed ) | 266 | void OVersatileView::setDefaultPixmaps( int mode, QPixmap& leaf, QPixmap& opened, QPixmap& closed ) |
267 | { | 267 | { |
268 | if ( mode == Tree ) | 268 | if ( mode == Tree ) |
269 | { | 269 | { |
270 | _treeleaf = leaf; | 270 | _treeleaf = leaf; |
271 | _treeopened = opened; | 271 | _treeopened = opened; |
272 | _treeclosed = closed; | 272 | _treeclosed = closed; |
273 | } | 273 | } |
274 | else if ( mode == Icons ) | 274 | else if ( mode == Icons ) |
275 | { | 275 | { |
276 | _iconleaf = leaf; | 276 | _iconleaf = leaf; |
277 | _iconopened = opened; | 277 | _iconopened = opened; |
278 | _iconclosed = closed; | 278 | _iconclosed = closed; |
279 | } | 279 | } |
280 | else | 280 | else |
281 | { | 281 | { |
282 | odebug << "OVersatileView::setDefaultPixmaps(): invalid mode" << oendl; | 282 | odebug << "OVersatileView::setDefaultPixmaps(): invalid mode" << oendl; |
283 | } | 283 | } |
284 | } | 284 | } |
285 | 285 | ||
286 | QIconView* OVersatileView::iconView() const | 286 | QIconView* OVersatileView::iconView() const |
287 | { | 287 | { |
288 | return _iconview; | 288 | return _iconview; |
289 | } | 289 | } |
290 | 290 | ||
291 | OListView* OVersatileView::listView() const | 291 | OListView* OVersatileView::listView() const |
292 | { | 292 | { |
293 | return _listview; | 293 | return _listview; |
294 | } | 294 | } |
295 | 295 | ||
296 | void OVersatileView::setViewMode( int mode ) | 296 | void OVersatileView::setViewMode( int mode ) |
297 | { | 297 | { |
298 | if ( mode == Tree ) | 298 | if ( mode == Tree ) |
299 | { | 299 | { |
300 | _viewmode = mode; | 300 | _viewmode = mode; |
301 | raiseWidget( _listview ); | 301 | raiseWidget( _listview ); |
302 | } | 302 | } |
303 | else if ( mode == Icons ) | 303 | else if ( mode == Icons ) |
304 | { | 304 | { |
305 | _viewmode = mode; | 305 | _viewmode = mode; |
306 | raiseWidget( _iconview ); | 306 | raiseWidget( _iconview ); |
307 | } | 307 | } |
308 | else | 308 | else |
309 | { | 309 | { |
310 | odebug << "OVersatileView::setViewMode(): invalid mode" << oendl; | 310 | odebug << "OVersatileView::setViewMode(): invalid mode" << oendl; |
311 | } | 311 | } |
312 | } | 312 | } |
313 | 313 | ||
314 | void OVersatileView::setIconViewMode() | 314 | void OVersatileView::setIconViewMode() |