mirror of
https://bitbucket.org/smil3y/kde-extraapps.git
synced 2025-02-24 19:02:53 +00:00
173 lines
4.4 KiB
C++
173 lines
4.4 KiB
C++
/*
|
|
* KMix -- KDE's full featured mini mixer
|
|
*
|
|
* Copyright (C) 2000 Stefan Schimanski <1Stein@gmx.de>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library General Public
|
|
* License along with this program; if not, write to the Free
|
|
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef KMIX_H
|
|
#define KMIX_H
|
|
|
|
|
|
#include <config.h>
|
|
|
|
// Qt
|
|
#include <QString>
|
|
|
|
class QLabel;
|
|
#include <qlist.h>
|
|
#include <QVBoxLayout>
|
|
class QPushButton;
|
|
#include <QTimer>
|
|
class KTabWidget;
|
|
|
|
// KDE
|
|
class KAccel;
|
|
class KAction;
|
|
#include <kxmlguiwindow.h>
|
|
|
|
// KMix
|
|
#include "core/GlobalConfig.h"
|
|
|
|
class KMixDockWidget;
|
|
class KMixerWidget;
|
|
class KMixWindow;
|
|
class Mixer;
|
|
#include "core/mixer.h"
|
|
|
|
class OSDWidget;
|
|
class DialogSelectMaster;
|
|
|
|
class
|
|
KMixWindow : public KXmlGuiWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
KMixWindow(bool invisible);
|
|
~KMixWindow();
|
|
|
|
private:
|
|
void saveBaseConfig();
|
|
void saveViewConfig();
|
|
void loadConfig();
|
|
void loadBaseConfig();
|
|
|
|
void initPrefDlg();
|
|
void initActions();
|
|
void initActionsLate();
|
|
void initActionsAfterInitMixer();
|
|
//void recreateGUI();
|
|
void initWidgets();
|
|
//void setErrorMixerWidget();
|
|
|
|
void setBeepOnVolumeChange(bool beep);
|
|
void fixConfigAfterRead();
|
|
|
|
virtual bool queryClose();
|
|
|
|
public slots:
|
|
void controlsChange(int changeType);
|
|
void quit();
|
|
void showSettings();
|
|
void showHelp();
|
|
void showAbout();
|
|
void toggleMenuBar();
|
|
void loadVolumes();
|
|
void loadVolumes(QString postfix);
|
|
void saveVolumes();
|
|
void saveVolumes(QString postfix);
|
|
void saveConfig();
|
|
virtual void applyPrefs();
|
|
void recreateGUI(bool saveView);
|
|
void recreateGUI(bool saveConfig, const QString& mixerId, bool forceNewTab);
|
|
void recreateGUIwithSavingView();
|
|
void newMixerShown(int tabIndex);
|
|
void slotSelectMaster();
|
|
|
|
private:
|
|
KMixerWidget* findKMWforTab( const QString& tabId );
|
|
|
|
void forkExec(const QStringList& args);
|
|
void errorPopup(const QString& msg);
|
|
|
|
KAccel *m_keyAccel;
|
|
KAction* _actionShowMenubar;
|
|
|
|
private:
|
|
/**
|
|
* configSnapshot is used to hold the original state before modifications in the preferences dialog
|
|
*/
|
|
GlobalConfigData configDataSnapshot;
|
|
|
|
bool m_startVisible;
|
|
bool m_visibilityUpdateAllowed;
|
|
bool m_multiDriverMode; // Not officially supported.
|
|
bool m_autouseMultimediaKeys; // Due to message freeze, not in config dialog in KDE4.4
|
|
|
|
KTabWidget *m_wsMixers;
|
|
|
|
KMixDockWidget *m_dockWidget;
|
|
DialogSelectMaster *m_dsm;
|
|
|
|
QString m_hwInfoString;
|
|
QString m_defaultCardOnStart;
|
|
bool m_dontSetDefaultCardOnStart;
|
|
QLabel *m_errorLabel;
|
|
QList<QString> m_backendFilter;
|
|
unsigned int m_configVersion;
|
|
void showVolumeDisplay();
|
|
void increaseOrDecreaseVolume(bool increase);
|
|
|
|
OSDWidget* osdWidget;
|
|
|
|
bool addMixerWidget(const QString& mixer_ID, QString guiprofId, int insertPosition);
|
|
void setInitialSize();
|
|
|
|
private:
|
|
static QString getKmixctrlRcFilename(QString postfix);
|
|
bool profileExists(QString guiProfileId);
|
|
bool updateDocking();
|
|
void removeDock();
|
|
void updateTabsClosable();
|
|
|
|
private slots:
|
|
void slotHWInfo();
|
|
void slotKdeAudioSetupExec();
|
|
void slotConfigureCurrentView();
|
|
void plugged( const char* driverName, const QString& udi, QString& dev);
|
|
void unplugged( const QString& udi);
|
|
void hideOrClose();
|
|
void slotIncreaseVolume();
|
|
void slotDecreaseVolume();
|
|
void slotMute();
|
|
void slotSelectMasterClose(QObject*);
|
|
|
|
void newView();
|
|
void saveAndCloseView(int);
|
|
|
|
void loadVolumes1() { loadVolumes(QString("1")); }
|
|
void loadVolumes2() { loadVolumes(QString("2")); }
|
|
void loadVolumes3() { loadVolumes(QString("3")); }
|
|
void loadVolumes4() { loadVolumes(QString("4")); }
|
|
|
|
void saveVolumes1() { saveVolumes(QString("1")); }
|
|
void saveVolumes2() { saveVolumes(QString("2")); }
|
|
void saveVolumes3() { saveVolumes(QString("3")); }
|
|
void saveVolumes4() { saveVolumes(QString("4")); }
|
|
};
|
|
|
|
#endif // KMIX_H
|