File kmix-autostart.diff of Package kdemultimedia4
Index: kmix/KMixApp.h
===================================================================
--- kmix/KMixApp.h (revision 832805)
+++ kmix/KMixApp.h (working copy)
@@ -36,6 +36,7 @@
public slots:
//void quitExtended(); // For a hack on visibility()
static void keepVisibility(bool);
+ static void autoStart(bool);
/*
signals:
void stopUpdatesOnVisibility();
@@ -43,6 +44,7 @@
private:
KMixWindow *m_kmix;
static bool _keepVisibility;
+ static bool _autoStart;
};
#endif
Index: kmix/kmixprefdlg.h
===================================================================
--- kmix/kmixprefdlg.h (revision 832805)
+++ kmix/kmixprefdlg.h (working copy)
@@ -57,6 +57,7 @@
QCheckBox *m_showTicks;
QCheckBox *m_showLabels;
QCheckBox *m_onLogin;
+ QCheckBox *m_disableAutoStart;
QRadioButton *_rbVertical;
QRadioButton *_rbHorizontal;
};
Index: kmix/kmix.cpp
===================================================================
--- kmix/kmix.cpp (revision 832805)
+++ kmix/kmix.cpp (working copy)
@@ -27,8 +27,10 @@
#include <QLabel>
#include <qradiobutton.h>
#include <KTabWidget>
+#include <QTimer>
// include files for KDE
+#include <kcmdlineargs.h>
#include <kcombobox.h>
#include <kiconloader.h>
#include <kmessagebox.h>
@@ -87,6 +89,10 @@
theKMixDeviceManager->initHotplug();
connect(theKMixDeviceManager, SIGNAL( plugged( const char*, const QString&, QString&)), SLOT (plugged( const char*, const QString&, QString&) ) );
connect(theKMixDeviceManager, SIGNAL( unplugged( const QString&)), SLOT (unplugged( const QString&) ) );
+
+ if (KCmdLineArgs::parsedArgs()->isSet("autostart") && ! Mixer::mixers().first())
+ QTimer::singleShot(0, kapp, SLOT(quit()));
+
if ( m_startVisible )
show(); // Started visible: We don't do "m_isVisible = true;", as the showEvent() already does it
@@ -223,6 +229,7 @@
config.writeEntry( "Tickmarks", m_showTicks );
config.writeEntry( "Labels", m_showLabels );
config.writeEntry( "startkdeRestore", m_onLogin );
+ config.writeEntry( "AutoStart", m_autoStart );
config.writeEntry( "DefaultCardOnStart", m_defaultCardOnStart );
config.writeEntry( "ConfigVersion", KMIX_CONFIG_VERSION );
Mixer* mixerMasterCard = Mixer::getGlobalMasterMixer();
@@ -295,6 +302,7 @@
m_showLabels = config.readEntry("Labels", true);
m_onLogin = config.readEntry("startkdeRestore", true );
m_startVisible = config.readEntry("Visible", false);
+ m_autoStart = config.readEntry("AutoStart", true);
m_multiDriverMode = config.readEntry("MultiDriver", false);
const QString& orientationString = config.readEntry("Orientation", "Vertical");
m_defaultCardOnStart = config.readEntry( "DefaultCardOnStart", "" );
@@ -586,6 +594,7 @@
m_prefDlg->m_volumeChk->setChecked(m_volumeWidget);
m_prefDlg->m_volumeChk->setEnabled( m_showDockWidget );
m_prefDlg->m_onLogin->setChecked( m_onLogin );
+ m_prefDlg->m_disableAutoStart->setChecked( !m_autoStart );
m_prefDlg->m_showTicks->setChecked( m_showTicks );
m_prefDlg->m_showLabels->setChecked( m_showLabels );
@@ -627,6 +636,7 @@
m_showDockWidget = prefDlg->m_dockingChk->isChecked();
m_volumeWidget = prefDlg->m_volumeChk->isChecked();
m_onLogin = prefDlg->m_onLogin->isChecked();
+ m_autoStart = !prefDlg->m_disableAutoStart->isChecked();
if ( prefDlg->_rbVertical->isChecked() ) {
m_toplevelOrientation = Qt::Vertical;
}
Index: kmix/KMixApp.cpp
===================================================================
--- kmix/KMixApp.cpp (revision 832805)
+++ kmix/KMixApp.cpp (working copy)
@@ -22,9 +22,11 @@
#include "KMixApp.h"
#include "kmix.h"
#include <kdebug.h>
+#include <kcmdlineargs.h>
bool KMixApp::_keepVisibility = false;
+bool KMixApp::_autoStart = false;
KMixApp::KMixApp()
: KUniqueApplication(), m_kmix( 0 )
@@ -49,6 +51,16 @@
KMixApp::newInstance()
{
//kDebug(67100) << "KMixApp::newInstance() isRestored()=" << isRestored() << "_keepVisibility=" << _keepVisibility;
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+ if (args->isSet("autostart"))
+ {
+ kapp->disableSessionManagement();
+
+ if ( m_kmix )
+ return 0;
+ }
+
if ( m_kmix )
{ // There already exists an instance/window
kDebug(67100) << "KMixApp::newInstance() Instance exists";
@@ -92,6 +104,11 @@
_keepVisibility = val_keepVisibility;
}
+void KMixApp::autoStart(bool val_autoStart) {
+ //kDebug(67100) << "KMixApp::autoStart()";
+ _autoStart = val_autoStart;
+}
+
/*
void
KMixApp::quitExtended()
Index: kmix/kmix.h
===================================================================
--- kmix/kmix.h (revision 832805)
+++ kmix/kmix.h (working copy)
@@ -95,6 +95,7 @@
bool m_showDockWidget;
bool m_volumeWidget;
+ bool m_autoStart;
bool m_showTicks;
bool m_showLabels;
bool m_onLogin;
Index: kmix/main.cpp
===================================================================
--- kmix/main.cpp (revision 832805)
+++ kmix/main.cpp (working copy)
@@ -55,12 +55,15 @@
KCmdLineOptions options;
options.add("keepvisibility", ki18n("Inhibits the unhiding of the KMix main window, if KMix is already running."));
+ options.add("autostart", ki18n("Used by kmix_autostart.desktop"));
KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.
KUniqueApplication::addCmdLineOptions();
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
bool hasArgKeepvisibility = args->isSet("keepvisibility");
KMixApp::keepVisibility(hasArgKeepvisibility);
+ bool hasAutoStart = args->isSet("autostart");
+ KMixApp::autoStart(hasAutoStart);
if (!KMixApp::start())
return 0;
Index: kmix/kmixprefdlg.cpp
===================================================================
--- kmix/kmixprefdlg.cpp (revision 832805)
+++ kmix/kmixprefdlg.cpp (working copy)
@@ -78,6 +78,12 @@
m_onLogin = new QCheckBox( i18n("Restore volumes on login"), m_generalTab );
l->addWidget( m_onLogin );
+ l = new QHBoxLayout();
+ layout->addItem( l );
+ l->addSpacing(10);
+ m_disableAutoStart = new QCheckBox( i18n("Disable automatic startup on login"), m_generalTab );
+ l->addWidget( m_disableAutoStart );
+
// -----------------------------------------------------------
label = new QLabel( i18n("Visual"), m_generalTab );