summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/startmenu.cpp50
1 files changed, 25 insertions, 25 deletions
diff --git a/core/launcher/startmenu.cpp b/core/launcher/startmenu.cpp
index 5506c55..b008a30 100644
--- a/core/launcher/startmenu.cpp
+++ b/core/launcher/startmenu.cpp
@@ -1,171 +1,171 @@
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 "startmenu.h" 21#include "startmenu.h"
22#include "sidething.h" 22#include "sidething.h"
23//#include "mrulist.h" 23//#include "mrulist.h"
24#include "info.h" 24#include "info.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/applnk.h> 28#include <qpe/applnk.h>
29#include <qpe/global.h> 29#include <qpe/global.h>
30#include <qpe/resource.h> 30#include <qpe/resource.h>
31 31
32#include <qdict.h> 32#include <qdict.h>
33 33
34#include <stdlib.h> 34#include <stdlib.h>
35 35
36 36
37// #define USE_CONFIG_FILE 37// #define USE_CONFIG_FILE
38 38
39 39
40StartMenu::StartMenu(QWidget *parent) : QLabel( parent ) 40StartMenu::StartMenu(QWidget *parent) : QLabel( parent )
41{ 41{
42 loadOptions(); 42 loadOptions();
43 43
44 setPixmap( Resource::loadPixmap( startButtonPixmap ) ); 44 setPixmap( Resource::loadPixmap( startButtonPixmap ) );
45 setFocusPolicy( NoFocus ); 45 setFocusPolicy( NoFocus );
46 //setFlat( startButtonIsFlat ); 46 //setFlat( startButtonIsFlat );
47 47
48 apps = new AppLnkSet( QPEApplication::qpeDir() + "apps" ); 48 apps = new AppLnkSet( QPEApplication::qpeDir() + "apps" );
49 49
50 createMenu(); 50 createMenu();
51} 51}
52 52
53 53
54void StartMenu::mousePressEvent( QMouseEvent * ) 54void StartMenu::mousePressEvent( QMouseEvent * )
55{ 55{
56 launch(); 56 launch();
57 if (desktopInfo) 57 if (desktopInfo)
58 desktopInfo->menuClicked(); 58 desktopInfo->menuClicked();
59} 59}
60 60
61 61
62StartMenu::~StartMenu() 62StartMenu::~StartMenu()
63{ 63{
64 delete apps; 64 delete apps;
65} 65}
66 66
67 67
68void StartMenu::loadOptions() 68void StartMenu::loadOptions()
69{ 69{
70#ifdef USE_CONFIG_FILE 70#ifdef USE_CONFIG_FILE
71 // Read configuration file 71 // Read configuration file
72 Config config("StartMenu"); 72 Config config("StartMenu");
73 config.setGroup( "StartMenu" ); 73 config.setGroup( "StartMenu" );
74 QString tmpBoolString1 = config.readEntry( "UseWidePopupMenu", "FALSE" ); 74 QString tmpBoolString1 = config.readEntry( "UseWidePopupMenu", "FALSE" );
75 useWidePopupMenu = ( tmpBoolString1 == "TRUE" ) ? TRUE : FALSE; 75 useWidePopupMenu = ( tmpBoolString1 == "TRUE" ) ? TRUE : FALSE;
76 QString tmpBoolString2 = config.readEntry( "StartButtonIsFlat", "TRUE" ); 76 QString tmpBoolString2 = config.readEntry( "StartButtonIsFlat", "TRUE" );
77 startButtonIsFlat = ( tmpBoolString2 == "TRUE" ) ? TRUE : FALSE; 77 startButtonIsFlat = ( tmpBoolString2 == "TRUE" ) ? TRUE : FALSE;
78// QString tmpBoolString3 = config.readEntry( "UseMRUList", "TRUE" ); 78// QString tmpBoolString3 = config.readEntry( "UseMRUList", "TRUE" );
79 popupMenuSidePixmap = config.readEntry( "PopupMenuSidePixmap", "launcher/sidebar" ); 79 popupMenuSidePixmap = config.readEntry( "PopupMenuSidePixmap", "launcher/sidebar" );
80 startButtonPixmap = config.readEntry( "StartButtonPixmap", "go" ); 80 startButtonPixmap = config.readEntry( "StartButtonPixmap", "go" );
81#else 81#else
82 // Basically just #include the .qpe_menu.conf file settings 82 // Basically just #include the .qpe_menu.conf file settings
83 useWidePopupMenu = FALSE; 83 useWidePopupMenu = FALSE;
84 popupMenuSidePixmap = "lauchner/sidebar"; 84 popupMenuSidePixmap = "launcher/sidebar";
85 startButtonIsFlat = TRUE; 85 startButtonIsFlat = TRUE;
86 startButtonPixmap = "launcher/start_button"; 86 startButtonPixmap = "launcher/start_button";
87#endif 87#endif
88} 88}
89 89
90 90
91void StartMenu::createMenu() 91void StartMenu::createMenu()
92{ 92{
93 if ( useWidePopupMenu ) 93 if ( useWidePopupMenu )
94 launchMenu = new PopupWithLaunchSideThing( this, &popupMenuSidePixmap ); 94 launchMenu = new PopupWithLaunchSideThing( this, &popupMenuSidePixmap );
95 else 95 else
96 launchMenu = new StartPopupMenu( this ); 96 launchMenu = new StartPopupMenu( this );
97 97
98 loadMenu( apps, launchMenu ); 98 loadMenu( apps, launchMenu );
99 99
100} 100}
101 101
102void StartMenu::itemSelected( int id ) 102void StartMenu::itemSelected( int id )
103{ 103{
104 const AppLnk *app = apps->find( id ); 104 const AppLnk *app = apps->find( id );
105 if ( app ) 105 if ( app )
106 app->execute(); 106 app->execute();
107} 107}
108 108
109bool StartMenu::loadMenu( AppLnkSet *folder, QPopupMenu *menu ) 109bool StartMenu::loadMenu( AppLnkSet *folder, QPopupMenu *menu )
110{ 110{
111 bool result = FALSE; 111 bool result = FALSE;
112 112
113 QStringList typs = folder->types(); 113 QStringList typs = folder->types();
114 QDict<QPopupMenu> typpop; 114 QDict<QPopupMenu> typpop;
115 for (QStringList::Iterator tit=typs.begin(); tit!=typs.end(); ++tit) { 115 for (QStringList::Iterator tit=typs.begin(); tit!=typs.end(); ++tit) {
116 if ( !(*tit).isEmpty() ) { 116 if ( !(*tit).isEmpty() ) {
117 QPopupMenu *new_menu = new StartPopupMenu( menu ); 117 QPopupMenu *new_menu = new StartPopupMenu( menu );
118 typpop.insert(*tit, new_menu); 118 typpop.insert(*tit, new_menu);
119 connect( new_menu, SIGNAL(activated(int)), SLOT(itemSelected(int)) ); 119 connect( new_menu, SIGNAL(activated(int)), SLOT(itemSelected(int)) );
120 menu->insertItem( folder->typePixmap(*tit), folder->typeName(*tit), new_menu ); 120 menu->insertItem( folder->typePixmap(*tit), folder->typeName(*tit), new_menu );
121 } 121 }
122 } 122 }
123 123
124 QListIterator<AppLnk> it( folder->children() ); 124 QListIterator<AppLnk> it( folder->children() );
125 for ( ; it.current(); ++it ) { 125 for ( ; it.current(); ++it ) {
126 AppLnk *app = it.current(); 126 AppLnk *app = it.current();
127 if ( app->type() == "Separator" ) { 127 if ( app->type() == "Separator" ) {
128 menu->insertSeparator(); 128 menu->insertSeparator();
129 } else { 129 } else {
130 QString t = app->type(); 130 QString t = app->type();
131 QPopupMenu* pmenu = typpop.find(t); 131 QPopupMenu* pmenu = typpop.find(t);
132 if ( !pmenu ) 132 if ( !pmenu )
133 pmenu = menu; 133 pmenu = menu;
134 pmenu->insertItem( app->pixmap(), app->name(), app->id() ); 134 pmenu->insertItem( app->pixmap(), app->name(), app->id() );
135 result=TRUE; 135 result=TRUE;
136 } 136 }
137 } 137 }
138 138
139 if ( result ) 139 if ( result )
140 connect( menu, SIGNAL(activated(int)), SLOT(itemSelected(int)) ); 140 connect( menu, SIGNAL(activated(int)), SLOT(itemSelected(int)) );
141 141
142 return result; 142 return result;
143} 143}
144 144
145 145
146void StartMenu::launch() 146void StartMenu::launch()
147{ 147{
148 int y = mapToGlobal( QPoint() ).y() - launchMenu->sizeHint().height(); 148 int y = mapToGlobal( QPoint() ).y() - launchMenu->sizeHint().height();
149 149
150 if ( launchMenu->isVisible() ) 150 if ( launchMenu->isVisible() )
151 launchMenu->hide(); 151 launchMenu->hide();
152 else 152 else
153 launchMenu->popup( QPoint( 1, y ) ); 153 launchMenu->popup( QPoint( 1, y ) );
154} 154}
155 155
156const AppLnk* StartMenu::execToLink(const QString& appname) 156const AppLnk* StartMenu::execToLink(const QString& appname)
157{ 157{
158 const AppLnk* a = apps->findExec( appname ); 158 const AppLnk* a = apps->findExec( appname );
159 return a; 159 return a;
160} 160}
161 161
162void StartPopupMenu::keyPressEvent( QKeyEvent *e ) 162void StartPopupMenu::keyPressEvent( QKeyEvent *e )
163{ 163{
164 if ( e->key() == Key_F33 || e->key() == Key_Space ) { 164 if ( e->key() == Key_F33 || e->key() == Key_Space ) {
165 // "OK" button, little hacky 165 // "OK" button, little hacky
166 QKeyEvent ke(QEvent::KeyPress, Key_Enter, 13, 0); 166 QKeyEvent ke(QEvent::KeyPress, Key_Enter, 13, 0);
167 QPopupMenu::keyPressEvent( &ke ); 167 QPopupMenu::keyPressEvent( &ke );
168 } else { 168 } else {
169 QPopupMenu::keyPressEvent( e ); 169 QPopupMenu::keyPressEvent( e );
170 } 170 }
171} 171}