Development/Tutorials/Plasma4/ApplicationShell

From KDE TechBase
Revision as of 07:03, 10 August 2010 by PhreakOnALeash (talk | contribs) (start page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This page looks at the steps it takes to embed a Plasma shell inside of your application as a dashboard or summary page.

The Shell

The core of the dashboard's logic is in a KPart in kdebase-runtime, plasma-kpart. This KPart is loaded like any other ReadOnly KPart:

// this routine will find and load our Part.  it finds the Part by
// name which is a bad idea usually.. but it's alright in this
// case since our Part is made for this Shell
KService::Ptr service = KService::serviceByDesktopPath( "plasma-kpart.desktop" );

if (service)
{  
    // now that the Part is loaded, we cast it to a Part to get
    // our hands on it
    m_part = service->createInstance<KParts::ReadOnlyPart>(0, args);
    if (m_part)
    {   
        // tell the KParts::MainWindow that this is indeed the main widget
        // If you have something better to do with the widget, this is where
        // you would do it.
        setCentralWidget(m_part->widget());

        // and integrate the part's GUI with the shell's
        createGUI(m_part);

    }   
    else
    {   
        // For whatever reason the part didn't load
        KMessageBox::error(this, i18n("Could not instantiate our Part!"));
        qApp->quit();
    }   
}   
else
{   
    // if we couldn't find our Part, we exit since the Shell by
    // itself can't do anything useful
    KMessageBox::error(this, i18n("Could not find our Part!"));
    qApp->quit();
    // we return here, cause qApp->quit() only means "exit the
    // next time we enter the event loop...
    return;
}