summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/startmenu.cpp48
1 files changed, 24 insertions, 24 deletions
diff --git a/core/launcher/startmenu.cpp b/core/launcher/startmenu.cpp
index 39e07c8..2871233 100644
--- a/core/launcher/startmenu.cpp
+++ b/core/launcher/startmenu.cpp
@@ -14,17 +14,17 @@
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 INCLUDE_MENUITEM_DEF 21#define INCLUDE_MENUITEM_DEF
22 22
23#include "startmenu.h" 23#include "startmenu.h"
24#include "sidething.h" 24#include "sidething.h"
25//#include "mrulist.h" 25//#include "mrulist.h"
26#include "info.h" 26#include "info.h"
27 27
28#include <qpe/qpeapplication.h> 28#include <qpe/qpeapplication.h>
29#include <qpe/config.h> 29#include <qpe/config.h>
30#include <qpe/applnk.h> 30#include <qpe/applnk.h>
@@ -51,17 +51,17 @@ StartMenu::StartMenu(QWidget *parent) : QLabel( parent )
51 setPixmap(pm); 51 setPixmap(pm);
52 setFocusPolicy( NoFocus ); 52 setFocusPolicy( NoFocus );
53 //setFlat( startButtonIsFlat ); 53 //setFlat( startButtonIsFlat );
54 54
55 apps = 0; 55 apps = 0;
56 launchMenu = 0; 56 launchMenu = 0;
57 applets. setAutoDelete ( true ); 57 applets. setAutoDelete ( true );
58 sepId = 0; 58 sepId = 0;
59 59
60 reloadApps ( ); 60 reloadApps ( );
61 reloadApplets ( ); 61 reloadApplets ( );
62} 62}
63 63
64 64
65void StartMenu::mousePressEvent( QMouseEvent * ) 65void StartMenu::mousePressEvent( QMouseEvent * )
66{ 66{
67 launch(); 67 launch();
@@ -83,38 +83,38 @@ void StartMenu::loadOptions()
83 Config config("StartMenu"); 83 Config config("StartMenu");
84 config.setGroup( "StartMenu" ); 84 config.setGroup( "StartMenu" );
85 QString tmpBoolString1 = config.readEntry( "UseWidePopupMenu", "FALSE" ); 85 QString tmpBoolString1 = config.readEntry( "UseWidePopupMenu", "FALSE" );
86 useWidePopupMenu = ( tmpBoolString1 == "TRUE" ) ? TRUE : FALSE; 86 useWidePopupMenu = ( tmpBoolString1 == "TRUE" ) ? TRUE : FALSE;
87 QString tmpBoolString2 = config.readEntry( "StartButtonIsFlat", "TRUE" ); 87 QString tmpBoolString2 = config.readEntry( "StartButtonIsFlat", "TRUE" );
88 startButtonIsFlat = ( tmpBoolString2 == "TRUE" ) ? TRUE : FALSE; 88 startButtonIsFlat = ( tmpBoolString2 == "TRUE" ) ? TRUE : FALSE;
89 QString tmpBoolString3 = config.readEntry( "UseMRUList", "TRUE" ); 89 QString tmpBoolString3 = config.readEntry( "UseMRUList", "TRUE" );
90 popupMenuSidePixmap = config.readEntry( "PopupMenuSidePixmap", "launcher/sidebar" ); 90 popupMenuSidePixmap = config.readEntry( "PopupMenuSidePixmap", "launcher/sidebar" );
91 startButtonPixmap = config.readEntry( "StartButtonPixmap", "launcher/start_button" ); 91 startButtonPixmap = config.readEntry( "StartButtonPixmap", "go" );
92#else 92#else
93 // Basically just #include the .qpe_menu.conf file settings 93 // Basically just #include the .qpe_menu.conf file settings
94 useWidePopupMenu = FALSE; 94 useWidePopupMenu = FALSE;
95 popupMenuSidePixmap = "launcher/sidebar"; 95 popupMenuSidePixmap = "launcher/sidebar";
96 startButtonIsFlat = TRUE; 96 startButtonIsFlat = TRUE;
97 startButtonPixmap = "launcher/start_button"; // No tr 97 startButtonPixmap = "go"; // No tr
98#endif 98#endif
99} 99}
100 100
101 101
102void StartMenu::createMenu() 102void StartMenu::createMenu()
103{ 103{
104 delete launchMenu; 104 delete launchMenu;
105 if ( useWidePopupMenu ) 105 if ( useWidePopupMenu )
106 launchMenu = new PopupWithLaunchSideThing( this, &popupMenuSidePixmap ); 106 launchMenu = new PopupWithLaunchSideThing( this, &popupMenuSidePixmap );
107 else 107 else
108 launchMenu = new StartPopupMenu( this ); 108 launchMenu = new StartPopupMenu( this );
109 109
110 loadMenu ( apps, launchMenu ); 110 loadMenu ( apps, launchMenu );
111 loadApplets ( ); 111 loadApplets ( );
112 112
113 connect( launchMenu, SIGNAL(activated(int)), SLOT(itemSelected(int)) ); 113 connect( launchMenu, SIGNAL(activated(int)), SLOT(itemSelected(int)) );
114} 114}
115 115
116void StartMenu::reloadApps() 116void StartMenu::reloadApps()
117{ 117{
118 Config cfg("StartMenu"); 118 Config cfg("StartMenu");
119 cfg.setGroup("Menu"); 119 cfg.setGroup("Menu");
120 bool ltabs = cfg.readBoolEntry("LauncherTabs",TRUE); 120 bool ltabs = cfg.readBoolEntry("LauncherTabs",TRUE);
@@ -124,17 +124,17 @@ void StartMenu::reloadApps()
124 return; // nothing to do 124 return; // nothing to do
125 125
126 if ( lt ) { 126 if ( lt ) {
127 delete apps; 127 delete apps;
128 apps = new AppLnkSet( QPEApplication::qpeDir() + "apps" ); 128 apps = new AppLnkSet( QPEApplication::qpeDir() + "apps" );
129 } 129 }
130 if ( launchMenu ) { 130 if ( launchMenu ) {
131 launchMenu-> hide ( ); 131 launchMenu-> hide ( );
132 132
133 for ( QIntDictIterator<QPopupMenu> it ( tabdict ); it. current ( ); ++it ) { 133 for ( QIntDictIterator<QPopupMenu> it ( tabdict ); it. current ( ); ++it ) {
134 launchMenu-> removeItem ( it. currentKey ( )); 134 launchMenu-> removeItem ( it. currentKey ( ));
135 delete it.current ( ); 135 delete it.current ( );
136 } 136 }
137 tabdict. clear ( ); 137 tabdict. clear ( );
138 loadMenu(apps,launchMenu); 138 loadMenu(apps,launchMenu);
139 } else { 139 } else {
140 createMenu(); 140 createMenu();
@@ -153,34 +153,34 @@ void StartMenu::reloadApplets()
153 153
154void StartMenu::itemSelected( int id ) 154void StartMenu::itemSelected( int id )
155{ 155{
156 const AppLnk *app = apps->find( id ); 156 const AppLnk *app = apps->find( id );
157 if ( app ) 157 if ( app )
158 app->execute(); 158 app->execute();
159 else { 159 else {
160 MenuApplet *applet = applets. find ( id ); 160 MenuApplet *applet = applets. find ( id );
161 161
162 if ( applet ) 162 if ( applet )
163 applet-> iface-> activated ( ); 163 applet-> iface-> activated ( );
164 } 164 }
165} 165}
166 166
167bool StartMenu::loadMenu( AppLnkSet *folder, QPopupMenu *menu ) 167bool StartMenu::loadMenu( AppLnkSet *folder, QPopupMenu *menu )
168{ 168{
169 bool result = FALSE; 169 bool result = FALSE;
170 170
171 Config cfg("StartMenu"); 171 Config cfg("StartMenu");
172 cfg.setGroup("Menu"); 172 cfg.setGroup("Menu");
173 173
174 bool ltabs = cfg.readBoolEntry("LauncherTabs",TRUE); 174 bool ltabs = cfg.readBoolEntry("LauncherTabs",TRUE);
175 bool lot = cfg.readBoolEntry("LauncherOther",TRUE); 175 bool lot = cfg.readBoolEntry("LauncherOther",TRUE);
176 176
177 tabdict. clear ( ); 177 tabdict. clear ( );
178 178
179 if ( sepId ) 179 if ( sepId )
180 menu-> removeItem ( sepId ); 180 menu-> removeItem ( sepId );
181 sepId = ( menu-> count ( )) ? menu-> insertSeparator ( 0 ) : 0; 181 sepId = ( menu-> count ( )) ? menu-> insertSeparator ( 0 ) : 0;
182 182
183 if ( ltabs || lot ) { 183 if ( ltabs || lot ) {
184 QDict<QPopupMenu> typpop; 184 QDict<QPopupMenu> typpop;
185 QStringList typs = folder->types(); 185 QStringList typs = folder->types();
186 for (QStringList::Iterator tit=typs.fromLast(); ; --tit) { 186 for (QStringList::Iterator tit=typs.fromLast(); ; --tit) {
@@ -225,39 +225,39 @@ bool StartMenu::loadMenu( AppLnkSet *folder, QPopupMenu *menu )
225 t.replace(QRegExp("&"),"&&"); // escape shortcut character 225 t.replace(QRegExp("&"),"&&"); // escape shortcut character
226 pmenu->insertItem( app->pixmap(), t, app->id() ); 226 pmenu->insertItem( app->pixmap(), t, app->id() );
227 } 227 }
228 result=TRUE; 228 result=TRUE;
229 } 229 }
230 } 230 }
231 } 231 }
232 232
233 if ( sepId && ( menu-> idAt ( 0 ) == sepId )) { // no tabs entries 233 if ( sepId && ( menu-> idAt ( 0 ) == sepId )) { // no tabs entries
234 menu-> removeItem ( sepId ); 234 menu-> removeItem ( sepId );
235 sepId = 0; 235 sepId = 0;
236 } 236 }
237 if ( !menu-> count ( )) // if we don't do this QPopupMenu will insert a dummy Separator, which won't go away later 237 if ( !menu-> count ( )) // if we don't do this QPopupMenu will insert a dummy Separator, which won't go away later
238 sepId = menu-> insertSeparator ( ); 238 sepId = menu-> insertSeparator ( );
239 239
240 return result; 240 return result;
241} 241}
242 242
243 243
244void StartMenu::launch ( ) 244void StartMenu::launch ( )
245{ 245{
246 int y = mapToGlobal ( QPoint ( )). y ( ) - launchMenu-> sizeHint ( ). height ( ); 246 int y = mapToGlobal ( QPoint ( )). y ( ) - launchMenu-> sizeHint ( ). height ( );
247 247
248 if ( launchMenu-> isVisible ( )) { 248 if ( launchMenu-> isVisible ( )) {
249 launchMenu-> hide ( ); 249 launchMenu-> hide ( );
250 } 250 }
251 else { 251 else {
252 QWidget *active = qApp-> activeWindow ( ); 252 QWidget *active = qApp-> activeWindow ( );
253 if ( active && active-> isPopup ( )) 253 if ( active && active-> isPopup ( ))
254 active-> close ( ); 254 active-> close ( );
255 255
256 launchMenu-> popup ( QPoint ( 1, y )); 256 launchMenu-> popup ( QPoint ( 1, y ));
257 } 257 }
258} 258}
259 259
260const AppLnk* StartMenu::execToLink(const QString& appname) 260const AppLnk* StartMenu::execToLink(const QString& appname)
261{ 261{
262 const AppLnk* a = apps->findExec( appname ); 262 const AppLnk* a = apps->findExec( appname );
263 return a; 263 return a;
@@ -288,34 +288,34 @@ void StartMenu::clearApplets()
288 launchMenu-> hide(); 288 launchMenu-> hide();
289 289
290 for ( QIntDictIterator<MenuApplet> it ( applets ); it. current ( ); ++it ) { 290 for ( QIntDictIterator<MenuApplet> it ( applets ); it. current ( ); ++it ) {
291 MenuApplet *applet = it. current ( ); 291 MenuApplet *applet = it. current ( );
292 if ( launchMenu ) { 292 if ( launchMenu ) {
293 launchMenu-> removeItem ( applet-> id ); 293 launchMenu-> removeItem ( applet-> id );
294 delete applet-> popup; 294 delete applet-> popup;
295 } 295 }
296 296
297 applet-> iface-> release(); 297 applet-> iface-> release();
298 applet-> library-> unload(); 298 applet-> library-> unload();
299 delete applet-> library; 299 delete applet-> library;
300 } 300 }
301 applets.clear(); 301 applets.clear();
302} 302}
303 303
304 304
305 305
306void StartMenu::loadApplets() 306void StartMenu::loadApplets()
307{ 307{
308 Config cfg( "StartMenu" ); 308 Config cfg( "StartMenu" );
309 cfg.setGroup( "Applets" ); 309 cfg.setGroup( "Applets" );
310 310
311 // SafeMode causes too much problems, so we disable it for now -- 311 // SafeMode causes too much problems, so we disable it for now --
312 // maybe we should reenable it for OPIE 1.0 - sandman 26.09.02 312 // maybe we should reenable it for OPIE 1.0 - sandman 26.09.02
313 313
314 bool safe = false; //cfg.readBoolEntry("SafeMode",FALSE); 314 bool safe = false; //cfg.readBoolEntry("SafeMode",FALSE);
315 if ( safe && !safety_tid ) 315 if ( safe && !safety_tid )
316 return; 316 return;
317 cfg.writeEntry("SafeMode",TRUE); 317 cfg.writeEntry("SafeMode",TRUE);
318 cfg.write(); 318 cfg.write();
319 QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' ); 319 QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' );
320 320
321 QString lang = getenv( "LANG" ); 321 QString lang = getenv( "LANG" );
@@ -330,56 +330,56 @@ void StartMenu::loadApplets()
330 continue; 330 continue;
331 MenuAppletInterface *iface = 0; 331 MenuAppletInterface *iface = 0;
332 QLibrary *lib = new QLibrary( path + "/" + *it ); 332 QLibrary *lib = new QLibrary( path + "/" + *it );
333 if (( lib->queryInterface( IID_MenuApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) { 333 if (( lib->queryInterface( IID_MenuApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) {
334 MenuApplet *applet = new MenuApplet; 334 MenuApplet *applet = new MenuApplet;
335 xapplets[napplets++] = applet; 335 xapplets[napplets++] = applet;
336 applet->library = lib; 336 applet->library = lib;
337 applet->iface = iface; 337 applet->iface = iface;
338 338
339 QTranslator *trans = new QTranslator(qApp); 339 QTranslator *trans = new QTranslator(qApp);
340 QString type = (*it).left( (*it).find(".") ); 340 QString type = (*it).left( (*it).find(".") );
341 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; 341 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm";
342 if ( trans->load( tfn )) 342 if ( trans->load( tfn ))
343 qApp->installTranslator( trans ); 343 qApp->installTranslator( trans );
344 else 344 else
345 delete trans; 345 delete trans;
346 } else { 346 } else {
347 exclude += *it; 347 exclude += *it;
348 delete lib; 348 delete lib;
349 } 349 }
350 } 350 }
351 cfg.writeEntry( "ExcludeApplets", exclude, ',' ); 351 cfg.writeEntry( "ExcludeApplets", exclude, ',' );
352 qsort(xapplets,napplets,sizeof(applets[0]),compareAppletPositions); 352 qsort(xapplets,napplets,sizeof(applets[0]),compareAppletPositions);
353 353
354 if ( sepId ) 354 if ( sepId )
355 launchMenu-> removeItem ( sepId ); 355 launchMenu-> removeItem ( sepId );
356 sepId = ( launchMenu-> count ( )) ? launchMenu-> insertSeparator ( ) : 0; 356 sepId = ( launchMenu-> count ( )) ? launchMenu-> insertSeparator ( ) : 0;
357 357
358 while (napplets--) { 358 while (napplets--) {
359 MenuApplet *applet = xapplets[napplets]; 359 MenuApplet *applet = xapplets[napplets];
360 360
361 applet-> popup = applet-> iface-> popup ( this ); 361 applet-> popup = applet-> iface-> popup ( this );
362 362
363 if ( applet-> popup ) 363 if ( applet-> popup )
364 applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ), applet-> popup ); 364 applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ), applet-> popup );
365 else 365 else
366 applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ) ); 366 applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ) );
367 applets.insert ( applet-> id, new MenuApplet(*applet)); 367 applets.insert ( applet-> id, new MenuApplet(*applet));
368 } 368 }
369 delete [] xapplets; 369 delete [] xapplets;
370 370
371 if ( sepId && ( launchMenu-> idAt ( launchMenu-> count ( ) - 1 ) == sepId )) { // no applets 371 if ( sepId && ( launchMenu-> idAt ( launchMenu-> count ( ) - 1 ) == sepId )) { // no applets
372 launchMenu-> removeItem ( sepId ); 372 launchMenu-> removeItem ( sepId );
373 sepId = 0; 373 sepId = 0;
374 } 374 }
375 if ( !launchMenu-> count ( )) // if we don't do this QPopupMenu will insert a dummy Separator, which won't go away later 375 if ( !launchMenu-> count ( )) // if we don't do this QPopupMenu will insert a dummy Separator, which won't go away later
376 sepId = launchMenu-> insertSeparator ( ); 376 sepId = launchMenu-> insertSeparator ( );
377 377
378 if ( !safety_tid ) 378 if ( !safety_tid )
379 safety_tid = startTimer(2000); // TT has 5000, but this is a PITA for a developer ;) (sandman) 379 safety_tid = startTimer(2000); // TT has 5000, but this is a PITA for a developer ;) (sandman)
380} 380}
381 381
382void StartMenu::timerEvent(QTimerEvent* e) 382void StartMenu::timerEvent(QTimerEvent* e)
383{ 383{
384 if ( e->timerId() == safety_tid ) { 384 if ( e->timerId() == safety_tid ) {
385 Config cfg( "StartMenu" ); 385 Config cfg( "StartMenu" );