File kmix-autostart.diff of Package kdemultimedia4
--- kmix/apps/KMixApp.cpp 2011-01-02 16:53:28.000000000 +0100
+++ kmix/apps/KMixApp.cpp 2011-08-01 14:27:20.864178849 +0200
@@ -22,9 +22,11 @@
#include "KMixApp.h"
#include "apps/kmix.h"
#include <kdebug.h>
+#include <kcmdlineargs.h>
bool KMixApp::_keepVisibility = false;
+bool KMixApp::_autoStart = false;
KMixApp::KMixApp()
: KUniqueApplication(), m_kmix( 0 )
@@ -51,6 +53,17 @@
// There are 3 cases for a new instance
//kDebug(67100) << "KMixApp::newInstance() isRestored()=" << isRestored() << "_keepVisibility=" << _keepVisibility;
+
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+ if (args->isSet("autostart"))
+ {
+ kapp->disableSessionManagement();
+
+ if ( m_kmix )
+ return 0;
+ }
+
static bool first = true;
if ( !first )
{ // There already exists an instance/window
@@ -118,6 +131,11 @@
_keepVisibility = val_keepVisibility;
}
+void KMixApp::autoStart(bool val_autoStart) {
+ //kDebug(67100) << "KMixApp::autoStart()";
+ _autoStart = val_autoStart;
+}
+
/*
void
KMixApp::quitExtended()
--- kmix/apps/KMixApp.h 2010-09-01 23:37:58.000000000 +0200
+++ kmix/apps/KMixApp.h 2011-08-01 14:27:20.865178847 +0200
@@ -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
--- kmix/apps/kmix.cpp 2011-07-31 18:38:33.000000000 +0200
+++ kmix/apps/kmix.cpp 2011-08-01 14:29:03.519183816 +0200
@@ -29,9 +29,11 @@
#include <qradiobutton.h>
#include <QCursor>
#include <QString>
+#include <QTimer>
// include files for KDE
+#include <kcmdlineargs.h>
#include <kcombobox.h>
#include <kiconloader.h>
#include <kmessagebox.h>
@@ -106,6 +108,9 @@
fixConfigAfterRead();
theKMixDeviceManager->initHotplug();
connect(theKMixDeviceManager, SIGNAL(plugged(const char*,QString,QString&)), SLOT (plugged(const char*,QString,QString&)) );
+ if (KCmdLineArgs::parsedArgs()->isSet("autostart") && ! Mixer::mixers().first())
+ QTimer::singleShot(0, kapp, SLOT(quit()));
+
connect(theKMixDeviceManager, SIGNAL(unplugged(QString)), SLOT (unplugged(QString)) );
if ( m_startVisible && ! invisible)
show(); // Started visible
@@ -316,6 +321,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 );
config.writeEntry( "AutoUseMultimediaKeys", m_autouseMultimediaKeys );
@@ -420,6 +426,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", "" );
@@ -1030,6 +1037,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 );
@@ -1071,6 +1079,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;
}
--- kmix/apps/kmix.h 2011-07-22 01:15:32.000000000 +0200
+++ kmix/apps/kmix.h 2011-08-01 14:27:20.867178846 +0200
@@ -106,6 +106,7 @@
bool m_showDockWidget;
bool m_volumeWidget;
+ bool m_autoStart;
bool m_showTicks;
bool m_showLabels;
bool m_onLogin;
--- kmix/apps/main.cpp 2010-09-07 00:50:02.000000000 +0200
+++ kmix/apps/main.cpp 2011-08-01 14:27:20.867178846 +0200
@@ -58,6 +58,7 @@
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();
@@ -65,6 +66,8 @@
bool hasArgKeepvisibility = args->isSet("keepvisibility");
//kDebug(67100) << "hasArgKeepvisibility=" << hasArgKeepvisibility;
KMixApp::keepVisibility(hasArgKeepvisibility);
+ bool hasAutoStart = args->isSet("autostart");
+ KMixApp::autoStart(hasAutoStart);
if (!KMixApp::start())
return 0;
--- kmix/gui/kmixprefdlg.cpp 2010-09-01 23:37:58.000000000 +0200
+++ kmix/gui/kmixprefdlg.cpp 2011-08-01 14:27:20.868178847 +0200
@@ -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 );
--- kmix/gui/kmixprefdlg.h 2010-09-01 23:37:58.000000000 +0200
+++ kmix/gui/kmixprefdlg.h 2011-08-01 14:27:20.868178847 +0200
@@ -55,6 +55,7 @@
QCheckBox *m_showTicks;
QCheckBox *m_showLabels;
QCheckBox *m_onLogin;
+ QCheckBox *m_disableAutoStart;
QRadioButton *_rbVertical;
QRadioButton *_rbHorizontal;
};