File kmix-autostart.diff of Package kdemultimedia3

Index: kmix/kmixprefdlg.h
===================================================================
--- kmix/kmixprefdlg.h.orig
+++ kmix/kmixprefdlg.h
@@ -57,6 +57,7 @@ KMixPrefDlg : public KDialogBase
    QCheckBox *m_showTicks;
    QCheckBox *m_showLabels;
    QCheckBox *m_onLogin;
+   QCheckBox *m_disableAutoStart;
    QRadioButton *_rbVertical;
    QRadioButton *_rbHorizontal;
    QRadioButton *_rbNone;
Index: kmix/kmix.cpp
===================================================================
--- kmix/kmix.cpp.orig
+++ kmix/kmix.cpp
@@ -29,6 +29,7 @@
 #include <qtooltip.h>
 
 // include files for KDE
+#include <kcmdlineargs.h>
 #include <kcombobox.h>
 #include <kiconloader.h>
 #include <kmessagebox.h>
@@ -81,6 +82,9 @@ KMixWindow::KMixWindow()
 	initPrefDlg();
 	updateDocking();
 
+	if (KCmdLineArgs::parsedArgs()->isSet("autostart") && ! Mixer::mixers().first())
+		QTimer::singleShot(0, kapp, SLOT(quit()));
+
 	if ( m_startVisible )
 	{
 		 /* Started visible: We should do probably do:
@@ -249,6 +253,7 @@ KMixWindow::saveConfig()
    config->writeEntry( "Tickmarks", m_showTicks );
    config->writeEntry( "Labels", m_showLabels );
    config->writeEntry( "startkdeRestore", m_onLogin );
+   config->writeEntry( "AutoStart", m_autoStart);
    Mixer* mixerMasterCard = Mixer::masterCard();
    if ( mixerMasterCard != 0 ) {
       config->writeEntry( "MasterMixer", mixerMasterCard->id() );
@@ -299,6 +304,7 @@ KMixWindow::loadConfig()
    const QString& valueStyleString = config->readEntry("ValueStyle", "None");
    m_onLogin = config->readBoolEntry("startkdeRestore", true );
    m_startVisible = config->readBoolEntry("Visible", true);
+   m_autoStart = config->readBoolEntry("AutoStart", true);
    m_multiDriverMode = config->readBoolEntry("MultiDriver", false);
    m_surroundView    = config->readBoolEntry("Experimental-ViewSurround", false );
    m_gridView    = config->readBoolEntry("Experimental-ViewGrid", false );
@@ -428,6 +434,7 @@ KMixWindow::showSettings()
       m_prefDlg->m_showTicks->setChecked( m_showTicks );
       m_prefDlg->m_showLabels->setChecked( m_showLabels );
       m_prefDlg->m_onLogin->setChecked( m_onLogin );
+      m_prefDlg->m_disableAutoStart->setChecked( !m_autoStart);
       m_prefDlg->_rbVertical  ->setChecked( m_toplevelOrientation == Qt::Vertical );
       m_prefDlg->_rbHorizontal->setChecked( m_toplevelOrientation == Qt::Horizontal );
       m_prefDlg->_rbNone->setChecked( m_valueStyle == MixDeviceWidget::NNONE );
@@ -497,6 +504,7 @@ KMixWindow::applyPrefs( KMixPrefDlg *pre
    m_showTicks = prefDlg->m_showTicks->isChecked();
    m_showLabels = prefDlg->m_showLabels->isChecked();
    m_onLogin = prefDlg->m_onLogin->isChecked();
+   m_autoStart = !prefDlg->m_disableAutoStart->isChecked();
 
    if ( prefDlg->_rbNone->isChecked() ) {
      m_valueStyle = MixDeviceWidget::NNONE;
Index: kmix/KMixApp.cpp
===================================================================
--- kmix/KMixApp.cpp.orig
+++ kmix/KMixApp.cpp
@@ -23,6 +23,7 @@
 #include "KMixApp.h"
 #include "kmix.h"
 #include <kdebug.h>
+#include <kcmdlineargs.h>
 
 
 KMixApp::KMixApp()
@@ -40,9 +41,19 @@ KMixApp::~KMixApp()
 int
 KMixApp::newInstance()
 {
+	KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+	if (args->isSet("autostart"))
+	{
+		kapp->disableSessionManagement();
+
+		if ( m_kmix )
+			return 0;
+	}
+
 	if ( m_kmix )
 	{
-		m_kmix->show();
+			m_kmix->show();
 	}
 	else
 	{
@@ -69,3 +80,4 @@ KMixApp::quitExtended()
 }
 
 #include "KMixApp.moc"
+// vim: sw=8:noet:
Index: kmix/kmix.h
===================================================================
--- kmix/kmix.h.orig
+++ kmix/kmix.h
@@ -99,6 +99,7 @@ KMixWindow : public KMainWindow
    bool m_showDockWidget;
    bool m_volumeWidget;
    bool m_hideOnClose;
+   bool m_autoStart;
    bool m_showTicks;
    bool m_showLabels;
    MixDeviceWidget::ValueStyle m_valueStyle;             // No numbers by default
Index: kmix/main.cpp
===================================================================
--- kmix/main.cpp.orig
+++ kmix/main.cpp
@@ -33,8 +33,8 @@ I18N_NOOP("KMix - KDE's full featured mi
 
 static KCmdLineOptions options[] =
 {
+   { "autostart", "", 0 },
    KCmdLineLastOption
-   // INSERT YOUR COMMANDLINE OPTIONS HERE
 };
 
 extern "C" KDE_EXPORT int kdemain(int argc, char *argv[])
Index: kmix/kmixprefdlg.cpp
===================================================================
--- kmix/kmixprefdlg.cpp.orig
+++ kmix/kmixprefdlg.cpp
@@ -68,6 +68,10 @@ KMixPrefDlg::KMixPrefDlg( QWidget *paren
    m_onLogin = new QCheckBox( i18n("Restore volumes on login"), m_generalTab );
    layout->addWidget( m_onLogin );
 
+   m_disableAutoStart = new QCheckBox(
+           i18n("Disable automatic startup on login"), m_generalTab);
+   layout->addWidget(m_disableAutoStart);
+
    QBoxLayout *numbersLayout = new QHBoxLayout( layout );
    QButtonGroup *numbersGroup = new QButtonGroup( 3, Qt::Horizontal, i18n("Numbers"), m_generalTab );
    numbersGroup->setRadioButtonExclusive(true);
openSUSE Build Service is sponsored by