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

List:       kde-commits
Subject:    KDE/kdebase/workspace/kcontrol/kxkb
From:       Andriy Rysin <arysin () gmail ! com>
Date:       2007-10-17 4:20:32
Message-ID: 1192594832.604401.18350.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 726099 by rysin:

- plasma applet (initial code)
- fix couple of crashes
- some cleanups



 M  +36 -33    CMakeLists.txt  
 M  +3 -0      kcmlayout.cpp  
 M  +1 -1      kcmmisc/CMakeLists.txt  
 M  +1 -1      kxkb.desktop  
 M  +20 -21    kxkb_applet.cpp  
 M  +12 -48    kxkb_applet.h  
 M  +9 -0      kxkbcore.cpp  
 M  +17 -11    rules.cpp  


--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/CMakeLists.txt #726098:726099
@@ -13,22 +13,23 @@
   macro_optional_find_package(GObject)
 
   if(LIBXKLAVIER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND)
+    #MESSAGE("xklav:: ${LIBXKLAVIER_DEFINITIONS}")
+    #MESSAGE("xklav:: ${LIBXKLAVIER_LIBRARIES}")
+    SET(CMAKE_REQUIRED_DEFINITIONS ${LIBXKLAVIER_DEFINITIONS})
+    SET(CMAKE_REQUIRED_LIBRARIES ${LIBXKLAVIER_LIBRARIES})
 
-#MESSAGE("xklav:: ${LIBXKLAVIER_DEFINITIONS}")
-#MESSAGE("xklav:: ${LIBXKLAVIER_LIBRARIES}")
-	SET(CMAKE_REQUIRED_DEFINITIONS ${LIBXKLAVIER_DEFINITIONS})
-	SET(CMAKE_REQUIRED_LIBRARIES ${LIBXKLAVIER_LIBRARIES})
-
-	SET(XKB_SUPPORT_SRC xklavier_adaptor.cpp)
-	SET(XKB_SUPPORT_LIB ${LIBXKLAVIER_LIBRARIES} ${GOBJECT_LIBRARIES})
-	ADD_DEFINITIONS(-DHAVE_XKLAVIER=1 ${LIBXKLAVIER_DEFINITIONS} ${_LibGLIB2Cflags})
-	include_directories(${GLIB2_INCLUDE_DIR})
+    SET(XKB_SUPPORT_SRC xklavier_adaptor.cpp)
+    SET(XKB_SUPPORT_LIB ${LIBXKLAVIER_LIBRARIES} ${GOBJECT_LIBRARIES})
+    ADD_DEFINITIONS(-DHAVE_XKLAVIER=1 ${LIBXKLAVIER_DEFINITIONS} ${_LibGLIB2Cflags})
+    include_directories(${GLIB2_INCLUDE_DIR})
   else(LIBXKLAVIER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND)
-	MESSAGE ("Could not find glib, gobject or libxklavier >= 3.0 - old "xkbfile" code \
will be used to get keyboard layout configuration!") +    MESSAGE ("Could not find \
glib, gobject or libxklavier >= 3.0 - old "xkbfile" code will be used to get keyboard \
layout configuration!")  endif(LIBXKLAVIER_FOUND AND GLIB2_FOUND AND GOBJECT_FOUND)
 endif( USE_XKLAVIER STREQUAL ON )
 
+find_package(Plasma)
 
+
 ########### common sources ############
 
 set(kxkb_COMMON_SRCS 
@@ -53,16 +54,15 @@
 
 kde4_add_plugin(kcm_keyboard_layout ${kcm_keyboard_layout_PART_SRCS})
 
-target_link_libraries(kcm_keyboard_layout
-    ${KDE4_KIO_LIBS} xkbfile ${QT_QT3SUPPORT_LIBRARY}
-    ${XKB_SUPPORT_LIB}
+target_link_libraries(kcm_keyboard_layout ${KDE4_KIO_LIBS}
+    xkbfile ${XKB_SUPPORT_LIB}
 )
+
 if(X11_XTest_FOUND)
   target_link_libraries(kcm_keyboard_layout ${X11_XTest_LIB})
 endif(X11_XTest_FOUND)
 
 install(TARGETS kcm_keyboard_layout DESTINATION ${PLUGIN_INSTALL_DIR} )
-
 install( FILES keyboard_layout.desktop DESTINATION  ${SERVICES_INSTALL_DIR} )
 
 
@@ -78,7 +78,8 @@
 
 kde4_add_kdeinit_executable( kxkb ${kxkb_KDEINIT_SRCS})
 
-target_link_libraries(kdeinit_kxkb ${X11_X11_LIB} ${X11_Xext_LIB} ${KDE4_KDEUI_LIBS} \
xkbfile ${XKB_SUPPORT_LIB}) +target_link_libraries(kdeinit_kxkb ${X11_X11_LIB} \
${X11_Xext_LIB} ${KDE4_KDEUI_LIBS} +     xkbfile ${XKB_SUPPORT_LIB})
 
 install(TARGETS kdeinit_kxkb  DESTINATION ${LIB_INSTALL_DIR} )
 
@@ -87,28 +88,34 @@
 #install(FILES kxkb_component.h DESTINATION ${INCLUDE_INSTALL_DIR})
 
 
-########### KXKB Applet ###############
+########### KXKB Plasma Applet ###############
 
-if(BUILD_KICKER)
-set(kxkb_panelapplet_PART_SRCS kxkb_applet.cpp)
+if(PLASMA_FOUND)
 
-kde4_add_plugin(kxkb_panelapplet ${kxkb_panelapplet_PART_SRCS})
+    set(plasma_applet_kxkb_SRCS kxkb_applet.cpp ${kxkb_COMMON_SRCS}
+        kxkbcore.cpp
+        kxkbwidget.cpp
+    )
 
-target_link_libraries(kxkb_panelapplet kworkspace kickermain kdeinit_kxkb
-    ${KDE4_KIO_LIBS} xkbfile
-    ${XKB_SUPPORT_LIB}
-)
-if(X11_XTest_FOUND)
-  target_link_libraries(kxkb_panelapplet ${X11_XTest_LIB})
-endif(X11_XTest_FOUND)
+    kde4_add_plugin(plasma_applet_kxkb ${plasma_applet_kxkb_SRCS})
 
-install(TARGETS kxkb_panelapplet  DESTINATION ${PLUGIN_INSTALL_DIR} )
+    target_link_libraries(plasma_applet_kxkb ${PLASMA_LIBS} 
+        ${KDE4_KDEUI_LIBS} xkbfile ${XKB_SUPPORT_LIB})
+        
+    if(X11_XTest_FOUND)
+        target_link_libraries(plasma_applet_kxkb ${X11_XTest_LIB})
+    endif(X11_XTest_FOUND)
 
-install(FILES kxkb.desktop  DESTINATION  ${DATA_INSTALL_DIR}/kicker/applets)
-endif(BUILD_KICKER)
+    install(TARGETS plasma_applet_kxkb  DESTINATION ${PLUGIN_INSTALL_DIR} )
+    install(FILES plasma-applet-kxkb.desktop  DESTINATION  ${SERVICES_INSTALL_DIR})
 
+    ADD_DEPENDENCIES(plasma_applet_kxkb kdeinit_kxkb)
 
+endif(PLASMA_FOUND)
+
+
 ########### KXKB KPart ###############
+# we're not using KPart for now - it's too heavy
 #
 #set(kxkb_part_PART_SRCS kxkb_part.cpp)
 #
@@ -126,7 +133,3 @@
 #install( FILES kxkb_part.desktop DESTINATION  ${SERVICES_INSTALL_DIR} )
 ##install( FILES kxkb_part.rc DESTINATION  ${DATA_INSTALL_DIR}/kxkb_part )
 
-
-########### install files ###############
-
-install( FILES keyboard_layout.desktop  DESTINATION  ${SERVICES_INSTALL_DIR} )
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kcmlayout.cpp #726098:726099
@@ -675,6 +675,9 @@
 	return;
 
     QModelIndexList selected = selectionModel->selectedRows();
+    if( selected.count() < 1 )
+        return;
+    
     int row = selected[0].row();
     int new_row = row + shift;
     
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kcmmisc/CMakeLists.txt #726098:726099
@@ -14,7 +14,7 @@
 
 
 target_link_libraries(kcm_keyboard
-    ${KDE4_KIO_LIBS} xkbfile ${QT_QT3SUPPORT_LIBRARY}
+    ${KDE4_KIO_LIBS} xkbfile
     ${XKB_SUPPORT_LIB}
 )
 if(X11_XTest_FOUND)
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kxkb.desktop #726098:726099
@@ -67,5 +67,5 @@
 Icon=keyboard
 X-DBUS-StartupType=Unique
 
-X-KDE-Library=kxkb_panelapplet
+X-KDE-Library=kdeinit_kxkb
 X-KDE-UniqueApplet=true
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kxkb_applet.cpp #726098:726099
@@ -17,6 +17,7 @@
  */
 
 #include <QWidget>
+#include <QSizeF>
 
 #include <kglobal.h>
 #include <klocale.h>
@@ -28,25 +29,16 @@
 #include "kxkb_applet.moc"
 
 
-extern "C"
+KxkbApplet::KxkbApplet(QObject *parent, const QVariantList &args)
+    : Plasma::Applet(parent, args)
 {
-    KDE_EXPORT KPanelApplet* init(QWidget *parent, const QString& configFile)
-    {
-        KGlobal::locale()->insertCatalog("kxkb");
-        int actions = Plasma::Preferences | Plasma::About | Plasma::Help;
-        return new KxkbApplet(configFile, Plasma::Normal, actions, parent);
-    }
-}
+//    move( 0, 0 );
+    m_kxkbCore = new KxkbCore(NULL, KxkbCore::KXKB_COMPONENT, KxkbWidget::MENU_FULL, \
KxkbWidget::WIDGET_LABEL); +    m_kxkbCore->newInstance();
 
-
-KxkbApplet::KxkbApplet(const QString& configFile, Plasma::Type type,
-                 int actions, QWidget *parent, Qt::WFlags f)
-    : KPanelApplet(configFile, type, actions, parent, f)
-{
-    move( 0, 0 );
-    kxkbWidget = new KxkbLabel( this );
-	KxkbCore* kxkbCore = new KxkbCore(kxkbWidget);
-	kxkbCore->newInstance();
+    setDrawStandardBackground(true);
+//    connect(m_systemTrayWidget, SIGNAL(sizeChanged()), SLOT(updateLayout()));
+    //m_kxkbWidget->show();
     //setCustomMenu(widget->history()->popup());
     //centerWidget();
     //kxkbWidget->show();
@@ -54,14 +46,21 @@
 
 KxkbApplet::~KxkbApplet()
 {
+    if (failedToLaunch()) {
+        // Do some cleanup here
+    } else {
+        // Save settings
+    }
 }
 
-int KxkbApplet::widthForHeight(int height) const
+QSizeF KxkbApplet::contentSizeHint() const
 {
-	return 32;//kxkbWidget->width();
+//    return QSizeF(m_kxkbCore->size());
+    return QSizeF(32,32);
 }
 
-int KxkbApplet::heightForWidth(int width) const
+void KxkbApplet::paintInterface(QPainter *painter,
+                    const QStyleOptionGraphicsItem *option,
+                                    const QRect& contentsRect)
 {
-	return 32;//kxkbWidget->height();
 }
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kxkb_applet.h #726098:726099
@@ -24,64 +24,28 @@
 #include <QMouseEvent>
 #include <QPixmap>
 
-#include <kpanelapplet.h>
-#include <kconfig.h>
+#include <plasma/applet.h>
 
 
-class KxkbWidget;
+class QSizeF;
+class KxkbCore;
 
-class KxkbApplet : public KPanelApplet
+class KxkbApplet : public Plasma::Applet
 {
   Q_OBJECT
 public:
-    explicit KxkbApplet(const QString& configFile, Plasma::Type t = Plasma::Normal,
-                        int actions = 0, QWidget *parent = 0, Qt::WFlags f = 0);
+    explicit KxkbApplet(QObject *parent, const QVariantList &args);
     ~KxkbApplet();
     
-    virtual int widthForHeight(int height) const;
-    virtual int heightForWidth(int width) const;
-    /**
-     * Is called when the user selects "About" from the applets RMB menu.
-     * Reimplement this function to launch a about dialog.
-     *
-     * Note that this is called only when your applet supports the About action.
-     * See @ref Action and @ref KPanelApplet().
-     **/
+    void paintInterface(QPainter *painter,
+                    const QStyleOptionGraphicsItem *option,
+                                    const QRect& contentsRect);
+    QSizeF contentSizeHint() const;
 
-//  public slots:
-//    virtual void about();
-    /**
-     * Is called when the user selects "Help" from the applets RMB menu.
-     * Reimplement this function to launch a manual or help page.
-     *
-     * Note that this is called only when your applet supports the Help action.
-     * See @ref Action and @ref KPanelApplet().
-     **/
-//    virtual void help();
-    /**
-     * Is called when the user selects "Preferences" from the applets RMB menu.
-     * Reimplement this function to launch a preferences dialog or kcontrol module.
-     *
-     * Note that this is called only when your applet supports the preferences \
                action.
-     * See @ref Action and @ref KPanelApplet().
-     **/
-//    virtual void preferences();
-    
-//protected:
-//    void resizeEvent(QResizeEvent *);
-//    void mousePressEvent(QMouseEvent *e);
-
-
 private:
-	KxkbWidget* kxkbWidget;
-//private:
-//    KConfig *ksConfig;
-//    QWidget *mainView;
-//    KPopupMenu *mContextMenu;
-//    KPopupFrame *mBrightnessChooserFrame;
-//    BrightnessChooserImpl *chooser;
-
-//private: // Private methods
+    KxkbCore* m_kxkbCore;
 };
 
+K_EXPORT_PLASMA_APPLET(kxkb, KxkbApplet)
+
 #endif
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/kxkbcore.cpp #726098:726099
@@ -109,6 +109,8 @@
         else
             m_kxkbWidget = new KxkbLabel(m_controlType, m_parentWidget);
             
+        kDebug() << "Created kxkb widget" << m_kxkbWidget;
+        
  	connect(m_kxkbWidget, SIGNAL(menuTriggered(QAction*)), this, \
SLOT(iconMenuTriggered(QAction*)));  connect(m_kxkbWidget, SIGNAL(iconToggled()), \
this, SLOT(toggled()));  
@@ -291,6 +293,13 @@
 
 void KxkbCore::initTray()
 {
+    if( m_kxkbWidget == NULL ) {
+        if( m_kxkbConfig.m_layouts.count() > 1 || m_kxkbConfig.m_showSingle )
+            initWidget();
+        else
+            return;
+    }
+    
     kDebug() << "initing tray";
 
     m_kxkbWidget->setShowFlag(m_kxkbConfig.m_showFlag);
--- trunk/KDE/kdebase/workspace/kcontrol/kxkb/rules.cpp #726098:726099
@@ -96,20 +96,26 @@
 
 void XkbRules::loadRules(const QString &file, bool layoutsOnly)
 {
-	RulesInfo* rules = X11Helper::loadRules(file, layoutsOnly);
+    RulesInfo* rules = X11Helper::loadRules(file, layoutsOnly);
 
-	if (rules == NULL) {
-		kDebug() << "Unable to load rules";
-		return;
-	}
+    if (rules == NULL) {
+	kDebug() << "Unable to load rules";
+	return;
+    }
 
-	m_layouts= rules->layouts;
+    m_layouts= rules->layouts;
 
-	if( layoutsOnly == false ) {
-		m_models = rules->models;
-		m_options = rules->options;
-		m_optionGroups = rules->optionGroups;
-	}
+    if( layoutsOnly == false ) {
+	m_models = rules->models;
+	m_options = rules->options;
+	m_optionGroups = rules->optionGroups;
+
+        QHashIterator<QString, XkbOption> it( m_options );
+        for (; it.hasNext(); ) {
+            const XkbOption& option = it.next().value();
+            option.group->options.append(option);
+        }
+    }
 }
 
 


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

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