1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
/* This file is part of the KDE project
Copyright (c) 2004 Kevin Ottens <ervin ipsquad net>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "systemmenu.h"
#include <krun.h>
#include <kiconloader.h>
#include <qpixmap.h>
#include "global.h"
K_EXPORT_KICKER_MENUEXT(systemmenu, SystemMenu)
SystemMenu::SystemMenu(QWidget *parent, const char *name,
const QStringList &/*args*/)
: KPanelMenu( parent, name)
{
connect( &m_dirLister, SIGNAL( completed() ),
this, SLOT( slotCompleted() ) );
m_dirLister.openURL(KURL("system:/"));
}
SystemMenu::~SystemMenu()
{
}
void SystemMenu::append(const QString &icon, const KURL &url,
const QString &label)
{
int id = insertItem(KickerLib::menuIconSet(icon), label);
m_urlMap.insert(id, url);
}
void SystemMenu::initialize()
{
if (isVisible()) return;
clear();
if (m_entries.isEmpty())
{
insertItem(i18n("Empty..."));
return;
}
m_urlMap.clear();
KFileItemList::ConstIterator it = m_entries.begin();
KFileItemList::ConstIterator end = m_entries.end();
for (; it!=end; ++it)
{
QString icon = (*it)->iconName();
KURL url = (*it)->url();
QString name = (*it)->name();
append(icon, url, name);
}
}
void SystemMenu::slotExec(int id)
{
if(!m_urlMap.contains(id)) return;
new KRun(m_urlMap[id]); // will delete itself
}
void SystemMenu::slotCompleted()
{
m_entries = m_dirLister.items(KDirLister::AllItems);
setInitialized(false);
}
#include "systemmenu.moc"
|