mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-10-30 17:23:53 +01:00 
			
		
		
		
	* Removed all CVS tags. * Removed 'const char *name' parameter from all QObject contructors.
		
			
				
	
	
		
			122 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // rdcdplayer.h
 | |
| //
 | |
| // Abstract a Linux CDROM Device.
 | |
| //
 | |
| //   (C) Copyright 2002-2003,2016 Fred Gleason <fredg@paravelsystems.com>
 | |
| //
 | |
| //   This program is free software; you can redistribute it and/or modify
 | |
| //   it under the terms of the GNU Library General Public License 
 | |
| //   version 2 as published by the Free Software Foundation.
 | |
| //
 | |
| //   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., 675 Mass Ave, Cambridge, MA 02139, USA.
 | |
| //
 | |
| 
 | |
| #ifndef RDCDPLAYER_H
 | |
| #define RDCDPLAYER_H
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <linux/cdrom.h>
 | |
| 
 | |
| #include <queue>
 | |
| 
 | |
| #include <qdialog.h>
 | |
| #include <qtimer.h>
 | |
| #include <rdcddbrecord.h>
 | |
| 
 | |
| //
 | |
| // Driver Settings
 | |
| //
 | |
| #define RDCDPLAYER_CLOCK_INTERVAL 100
 | |
| #define RDCDPLAYER_BUTTON_DELAY 100
 | |
| 
 | |
| class RDCdPlayer : public QObject
 | |
| {
 | |
|   Q_OBJECT
 | |
|   public:
 | |
|    enum Status {NoStatusInfo=CDS_NO_INFO,NoDriveDisc=CDS_NO_DISC,
 | |
| 		    TrayOpen=CDS_TRAY_OPEN,NotReady=CDS_DRIVE_NOT_READY,
 | |
| 		    Ok=CDS_DISC_OK};
 | |
|    enum Medium {NoMediumInfo=CDS_NO_INFO,NoMediumLoaded=CDS_NO_DISC,
 | |
| 		AudioDisc=CDS_AUDIO,Data1=CDS_DATA_1,Data2=CDS_DATA_2,
 | |
| 		Xa21=CDS_XA_2_1,Xa22=CDS_XA_2_2,Mixed=CDS_MIXED};
 | |
|    enum State {NoStateInfo=0,Stopped=1,Playing=2,Paused=3};
 | |
|    enum PlayMode {Single=0,Continuous=1};
 | |
|    RDCdPlayer(FILE *profile_msgs,QWidget *parent=0);
 | |
|    ~RDCdPlayer();
 | |
|    QString device() const;
 | |
|    void setDevice(QString device);
 | |
|    bool open();
 | |
|    void close();
 | |
|    RDCdPlayer::Status status();
 | |
|    RDCdPlayer::Medium medium();
 | |
|    int tracks() const;
 | |
|    bool isAudio(int track) const;
 | |
|    int trackLength(int track) const;
 | |
|    unsigned trackOffset(int track) const;
 | |
|    RDCdPlayer::State state() const;
 | |
|    int leftVolume();
 | |
|    int rightVolume();
 | |
|    RDCdPlayer::PlayMode playMode() const;
 | |
|    void setPlayMode(RDCdPlayer::PlayMode mode);
 | |
|    void setCddbRecord(RDCddbRecord *);
 | |
| 
 | |
|   public slots:
 | |
|    void lock();
 | |
|    void unlock();
 | |
|    void eject();
 | |
|    void play(int track);
 | |
|    void pause();
 | |
|    void stop();
 | |
|    void setLeftVolume(int vol);
 | |
|    void setRightVolume(int vol);
 | |
| 
 | |
|   signals:
 | |
|    void ejected();
 | |
|    void mediaChanged();
 | |
|    void played(int track);
 | |
|    void paused();
 | |
|    void stopped();
 | |
|    void leftVolumeChanged(int vol);
 | |
|    void rightVolumeChanged(int vol);
 | |
| 
 | |
|   private slots:
 | |
|    void buttonTimerData();
 | |
|    void clockData();
 | |
| 
 | |
|   private:
 | |
|    enum ButtonOp {Play=0,Pause=1,Resume=2,Stop=3,Eject=4,Lock=5,Unlock=6};
 | |
|    void PushButton(RDCdPlayer::ButtonOp op,int track=-1);
 | |
|    void Profile(const QString &msg);
 | |
|    void ReadToc();
 | |
|    unsigned GetCddbSum(int);
 | |
|    unsigned GetCddbDiscId();
 | |
|    QString cdrom_device;
 | |
|    int cdrom_fd;
 | |
|    QTimer *cdrom_clock;
 | |
|    QTimer *cdrom_button_timer;
 | |
|    RDCdPlayer::State cdrom_state;
 | |
|    int cdrom_track;
 | |
|    int cdrom_track_count;
 | |
|    union cdrom_addr *cdrom_track_start;
 | |
|    bool *cdrom_audio_track;
 | |
|    RDCdPlayer::PlayMode cdrom_play_mode;
 | |
|    union cdrom_addr cdrom_rip_ptr;
 | |
|    union cdrom_addr cdrom_rip_end;
 | |
|    bool cdrom_old_state;
 | |
|    int cdrom_audiostatus;
 | |
|    unsigned cdrom_disc_id;
 | |
|    FILE *cdrom_profile_msgs;
 | |
|    std::queue<int> cdrom_button_queue;
 | |
|    std::queue<int> cdrom_track_queue;
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif  // RDCDPLAYER_H
 |