/* Copyright (C) 2000 Stefan Westerfeld stefan@space.twc.de This program is free software; you can redistribute it and/or modify it under the terms of the GNU 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 General Public License for more details. You should have received a copy of the GNU 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. Permission is also granted to link this program with the Qt library, treating Qt like a library that normally accompanies the operating system kernel, whether or not that is in fact the case. */ #ifndef KARTSCONFIG_H #define KARTSCONFIG_H #include <tdeapplication.h> #include <tqbuttongroup.h> #include <tqcheckbox.h> #include <tqlabel.h> #include <tqlineedit.h> #include <tqradiobutton.h> #include <tqtimer.h> #include <tdecmodule.h> #include <knuminput.h> #include <kprogress.h> #include "generaltab.h" #include "hardwaretab.h" class TDEProcess; class DeviceManager; class KArtsModule : public TDECModule { Q_OBJECT public: KArtsModule(TQWidget *parent=0, const char *name=0); ~KArtsModule(); void saveParams( void ); void load(); void load( bool useDefaults ); void save(); void defaults(); bool artsdIsRunning(); private slots: void slotChanged(); void slotTestSound(); void slotArtsdExited(TDEProcess* proc); void slotProcessArtsdOutput(TDEProcess* p, char* buf, int len); //void slotStartServerChanged(); private: void updateWidgets (); void calculateLatency(); TQString createArgs(bool netTrans,bool duplex, int fragmentCount, int fragmentSize, const TQString &deviceName, int rate, int bits, const TQString &audioIO, const TQString &addOptions, bool autoSuspend, int suspendTime); int userSavedChanges(); TQCheckBox *startServer, *startRealtime, *networkTransparent, *fullDuplex, *customDevice, *customRate, *autoSuspend; TQLineEdit *deviceName; TQSpinBox *samplingRate; KIntNumInput *suspendTime; generalTab *general; hardwareTab *hardware; TDEConfig *config; DeviceManager *deviceManager; int latestProcessStatus; int fragmentCount; int fragmentSize; bool configChanged; bool realtimePossible; class AudioIOElement { public: AudioIOElement(const TQString &name, const TQString &fullName) : name(name), fullName(fullName) {;} TQString name; TQString fullName; }; void initAudioIOList(); TQPtrList<AudioIOElement> audioIOList; void restartServer(); bool realtimeIsPossible(); }; class KStartArtsProgressDialog : public KProgressDialog { Q_OBJECT public: KStartArtsProgressDialog(KArtsModule *parent, const char *name, const TQString &caption, const TQString &text); public slots: void slotProgress(); void slotFinished(); private: TQTimer m_timer; int m_timeStep; KArtsModule *m_module; bool m_shutdown; }; #endif