[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/kcontrol/kxkb
From:       Andy Rysin <arysin () yahoo ! com>
Date:       2006-09-12 5:27:02
Message-ID: 1158038822.881845.6183.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 583349 by rysin:

Convert menu items to actions

 M  +4 -2      kxkb.cpp  
 M  +2 -1      kxkb.h  
 M  +28 -37    kxkbwidget.cpp  
 M  +4 -5      kxkbwidget.h  


--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kxkb.cpp #583348:583349
@@ -207,7 +207,7 @@
 	if( !m_kxkbWidget )
 	{
 		m_kxkbWidget = new KxkbSysTrayIcon();
- 		connect(m_kxkbWidget, SIGNAL(menuActivated(int)), this, \
SLOT(iconMenuActivated(int))); + 		connect(m_kxkbWidget, \
SIGNAL(menuTriggered(QAction*)), this, SLOT(iconMenuTriggered(QAction*)));  \
connect(m_kxkbWidget, SIGNAL(iconToggled()), this, SLOT(iconToggled()));  }
 
@@ -270,8 +270,10 @@
     setLayout(layout);
 }
 
-void KXKBApp::iconMenuActivated(int id)
+void KXKBApp::iconMenuTriggered(QAction* action)
 {
+	int id = action->data().toInt();
+	
     if( KxkbWidget::START_MENU_ID <= id
         && id < KxkbWidget::START_MENU_ID + (int)kxkbConfig.m_layouts.count() )
     {
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kxkb.h #583348:583349
@@ -42,6 +42,7 @@
 class KWinModule;
 class LayoutMap;
 class KxkbWidget;
+class QAction;
 
 /* This is the main Kxkb class responsible for reading options
     and switching layouts
@@ -67,7 +68,7 @@
 	void forceSetXKBMap( bool set );
 
 protected slots:
-    void iconMenuActivated(int id);
+    void iconMenuTriggered(QAction*);
     void iconToggled();
     void windowChanged(WId winId);
 
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kxkbwidget.cpp #583348:583349
@@ -27,11 +27,8 @@
 
 
 KxkbWidget::KxkbWidget():
- 	m_menuStartIndex(-1),
-	m_prevLayoutCount(0)
+	m_configSeparator(NULL)
 {
-// 	kDebug() << "Creating KxkbWidget with " << label_ << ", " << contextMenu_ << \
                endl;
-// 	kDebug() << "Creating KxkbWidget with startMenuIndex " << m_menuStartIndex << \
endl;  }
 
 void KxkbWidget::setCurrentLayout(const LayoutUnit& layoutUnit)
@@ -52,24 +49,16 @@
 {
 	QMenu* menu = contextMenu();
 
-	if( m_menuStartIndex == -1 )
-		m_menuStartIndex = menu->count();
-
-//	int index = menu->indexOf(0);
-
     m_descriptionMap.clear();
+
 //    menu->clear();
-//    menu->insertTitle( kapp->miniIcon(), kapp->caption() );
+//    menu->addTitle( qApp->windowIcon(), KInstance::caption() );
+//    menu->setTitle( KGlobal::instance()->aboutData()->programName() );
 
-	for(int ii=0; ii<m_prevLayoutCount; ++ii) {
-		menu->removeItem(START_MENU_ID + ii);
-		kDebug() << "remove item: " << START_MENU_ID + ii << endl;
-	}
-/*	menu->removeItem(CONFIG_MENU_ID);
-	menu->removeItem(HELP_MENU_ID);*/
-
-//    KIconEffect iconeffect;
-
+	for(QList<QAction*>::Iterator it=m_actions.begin(); it != m_actions.end(); it++ )
+			menu->removeAction(*it);
+	m_actions.clear();
+	
 	int cnt = 0;
     QList<LayoutUnit>::ConstIterator it;
     for (it=layouts.begin(); it != layouts.end(); ++it)
@@ -79,26 +68,35 @@
 
 		const QPixmap& layoutPixmap = LayoutIcon::getInstance().findPixmap(layoutName, \
m_showFlag, (*it).displayName);  //         const QPixmap pix = \
                iconeffect.apply(layoutPixmap, KIcon::Small, KIcon::DefaultState);
-		const QPixmap pix = layoutPixmap;
 
 		QString layoutString = rules.layouts()[layoutName];
 		QString fullName = i18n( layoutString.toLatin1().constData() );
 		if( variantName.isEmpty() == false )
 			fullName += " (" + variantName + ')';
-		menu->insertItem(pix, fullName, START_MENU_ID + cnt, m_menuStartIndex + cnt);
+//		menu->insertItem(pix, fullName, START_MENU_ID + cnt, m_menuStartIndex + cnt);
+
+		QAction* action = new QAction(layoutPixmap, fullName, menu);
+		action->setData(START_MENU_ID + cnt);
+		m_actions.append(action);
 		m_descriptionMap.insert((*it).toPair(), fullName);
 
 		cnt++;
     }
+	menu->insertActions(m_configSeparator, m_actions);
 
-	m_prevLayoutCount = cnt;
-
 	// if show config, if show help
-	if( menu->indexOf(CONFIG_MENU_ID) == -1 ) {
-		menu->addSeparator();
-		menu->insertItem(SmallIcon("configure"), i18n("Configure..."), CONFIG_MENU_ID);
-		if( menu->indexOf(HELP_MENU_ID) == -1 )
-			menu->insertItem(SmallIcon("help"), i18n("Help"), HELP_MENU_ID);
+//	if( menu->indexOf(CONFIG_MENU_ID) == -1 ) {
+	if( m_configSeparator == NULL ) { // first call
+		m_configSeparator = menu->addSeparator();
+
+		QAction* configAction = new QAction(SmallIcon("configure"), i18n("Configure..."), \
menu); +		configAction->setData(CONFIG_MENU_ID);
+		menu->addAction(configAction);
+
+//		if( menu->indexOf(HELP_MENU_ID) == -1 )
+		QAction* helpAction = new QAction(SmallIcon("help"), i18n("Help"), menu);
+		helpAction->setData(HELP_MENU_ID);
+		menu->addAction(helpAction);
 	}
 
 /*    if( index != -1 ) { //not first start
@@ -109,19 +107,13 @@
     }*/
 }
 
-// void KxkbWidget::mouseReleaseEvent(QMouseEvent *ev)
-// {
-//     if (ev->button() == QMouseEvent::LeftButton)
-//         emit toggled();
-//     KSystemTray::mouseReleaseEvent(ev);
-// }
 
 KxkbSysTrayIcon::KxkbSysTrayIcon()
 {
 	m_tray = new KSystemTrayIcon();
 
- 	connect(contextMenu(), SIGNAL(menuActivated(int)), this, \
                SIGNAL(menuActivated(int)));
-	connect(m_tray, SIGNAL(trayActivated(QSystemTrayIcon::ActivationReason)), 
+ 	connect(contextMenu(), SIGNAL(triggered(QAction*)), this, \
SIGNAL(menuTriggered(QAction*))); +	connect(m_tray, \
SIGNAL(activated(QSystemTrayIcon::ActivationReason)),   this, \
SLOT(trayActivated(QSystemTrayIcon::ActivationReason)));  }
 
@@ -134,7 +126,6 @@
 {
 	if( reason == QSystemTrayIcon::Trigger )
 	  emit iconToggled();
-//	  emit KxkbWidget::iconToggled();
 }
 
 void KxkbSysTrayIcon::setPixmap(const QPixmap& pixmap)
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kxkbwidget.h #583348:583349
@@ -22,6 +22,7 @@
 
 class QMenu;
 class XkbRules;
+class QAction;
 
 /* This class is responsible for displaying flag/label for the layout,
     catching keyboard/mouse events and displaying menu when selected
@@ -41,7 +42,7 @@
     void setShowFlag(bool showFlag) { m_showFlag = showFlag; }
 	
 signals:
-	void menuActivated(int);
+	void menuTriggered(QAction*);
 	void iconToggled();
 
 protected:
@@ -49,14 +50,12 @@
 	virtual QMenu* contextMenu() = 0;
 	virtual void setToolTip(const QString& tip) = 0;
 	virtual void setPixmap(const QPixmap& pixmap) = 0;
-// 
-//     void mouseReleaseEvent(QMouseEvent *);
 
 private:
-	/*const*/ int m_menuStartIndex;
 	bool m_showFlag;
-	int m_prevLayoutCount;
     QMap<QString, QString> m_descriptionMap;
+	QList<QAction*> m_actions;
+	QAction* m_configSeparator;
 };
 
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic