00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SAX_DESKTOP_H
00022 #define SAX_DESKTOP_H 1
00023
00024
00025
00026
00027 #include <math.h>
00028 #include "import.h"
00029 #include "card.h"
00030 #include "path.h"
00031 #include "file.h"
00032
00033 namespace SaX {
00034
00035
00036
00037 #define XMODE "/usr/sbin/xmode"
00038 #define XQUERY "/usr/sbin/xquery"
00039 #define SAX_PROFILE_CHECK "/usr/share/sax/libsax/createCHK.sh"
00040 #define SAX_GRUB_UPDATE "/usr/share/sax/libsax/createGRB.pl"
00041 #define SAX_KMS_STATUS "/usr/share/sax/libsax/KMSStatus.sh"
00042 #define PROFILE_DIR "/usr/share/sax/profile/"
00043 #define MAP_DIR "/usr/share/sax/sysp/maps/"
00044 #define SYSP_VENDOR "/usr/share/sax/sysp/script/vendor.pl"
00045
00046
00047
00048
00056 class SaXManipulateDesktopIF : public SaXException {
00057 public:
00058 virtual void calculateModelines ( bool ) = 0;
00059 virtual void setExtraModelineString ( const QString& ) = 0;
00060 virtual void setExtraModeline ( int,int,int,int ) = 0;
00061 virtual void addExtraModeline ( int,int,int,int ) = 0;
00062 virtual void removeExtraModeline ( int,int ) = 0;
00063 virtual void setResolution ( int,int,int ) = 0;
00064 virtual void addResolution ( int,int,int ) = 0;
00065 virtual void removeResolution ( int,int,int ) = 0;
00066 virtual void setVirtualResolution ( int,int,int ) = 0;
00067 virtual void removeVirtualResolution ( int ) = 0;
00068 virtual void setColorDepth ( int ) = 0;
00069 virtual bool enable3D ( void ) = 0;
00070 virtual bool disable3D ( void ) = 0;
00071 virtual void setDisplaySize ( int,int ) = 0;
00072 virtual void setDisplayRatioAndTraversal ( double ,int, int ) = 0;
00073 virtual void setHsyncRange ( double,double ) = 0;
00074 virtual void setVsyncRange ( double,double ) = 0;
00075 virtual void setPreferredMode ( const QString& ) = 0;
00076 virtual void enableDPMS ( void ) = 0;
00077 virtual void disableDPMS ( void ) = 0;
00078 virtual void setMonitorVendor ( const QString& ) = 0;
00079 virtual void setMonitorName ( const QString& ) = 0;
00080 virtual void setCDBMonitor ( const QString& ) = 0;
00081 virtual QList<QString> getCDBMonitorVendorList ( void ) = 0;
00082 virtual QList<QString> getCDBMonitorModelList ( const QString& ) = 0;
00083 virtual Q3Dict<QString> getCDBMonitorData (
00084 const QString&,const QString&
00085 ) = 0;
00086 virtual Q3Dict<QString> getCDBMonitorIDData (
00087 const QString&
00088 ) = 0;
00089 virtual void setCDBMonitorData (
00090 const QString&, const QString&,
00091 const QString&, const QString&
00092 ) = 0;
00093
00094 public:
00095 virtual QList<QString> getResolutions ( int ) = 0;
00096 virtual QList<QString> getResolutionsFromFrameBuffer (void) = 0;
00097 virtual QList<QString> getResolutionFromServer ( void ) = 0;
00098 virtual QList<QString> getResolutionsFromDDC1 ( void ) = 0;
00099 virtual QList<QString> getResolutionsFromDDC2 ( void ) = 0;
00100 virtual QList<QString> getDisplaySize ( void ) = 0;
00101 virtual QList<QString> getDisplayRatio( void ) = 0;
00102 virtual QString getDisplayTraversal ( void ) = 0;
00103 virtual QList<QString> getHsyncRange ( void ) = 0;
00104 virtual QList<QString> getVsyncRange ( void ) = 0;
00105 virtual bool is3DEnabled ( void ) = 0;
00106 virtual bool is3DCard ( void ) = 0;
00107 virtual bool isDualHeadCard ( void ) = 0;
00108 virtual bool isXineramaMode ( void ) = 0;
00109 virtual bool DPMSEnabled ( void ) = 0;
00110 virtual int getFBKernelMode ( const QString&,int ) = 0;
00111 virtual int setFBKernelMode ( int ) = 0;
00112 virtual bool getKMSStatus ( void ) = 0;
00113 virtual int getColorDepthFromServer ( void ) = 0;
00114 virtual QString getMonitorVendor ( void ) = 0;
00115 virtual QString getMonitorName ( void ) = 0;
00116 virtual QString getColorDepth ( void ) = 0;
00117 virtual QString getVirtualResolution ( int ) = 0;
00118 virtual QString getDualHeadProfile ( void ) = 0;
00119 virtual QString getModelineAlgorithm ( void ) = 0;
00120 virtual bool willCalculateModelines ( void ) = 0;
00121
00122 public:
00123 virtual bool selectDesktop (int) = 0;
00124
00125 public:
00126 virtual ~SaXManipulateDesktopIF ( void ) { }
00127 };
00128
00129
00130
00185 class SaXManipulateDesktop : public SaXManipulateDesktopIF {
00186 private:
00187 SaXImport* mDesktop;
00188 SaXImport* mCard;
00189 SaXImport* mPath;
00190 SaXImportSysp* mSyspDesktop;
00191 SaXProcess* mCDBMonitors;
00192 QList<QString> mCDBMonitorList;
00193 Q3Dict<QString> mCDBMonitorData;
00194 int mDesktopID;
00195
00196 private:
00197 QString getVendorForDriver ( const QString& );
00198 QString calculateModeline ( int,int,int,int );
00199 QString getDriverOptionsDualHeadProfile ( const QString& );
00200 Q3Dict<QString> getMetaData ( void );
00201 QList<QString> getResolutionsFromDDC ( const QString& );
00202
00203 public:
00204 void calculateModelines ( bool );
00205 void setExtraModelineString ( const QString& );
00206 void setExtraModeline ( int,int,int,int );
00207 void addExtraModeline ( int,int,int,int );
00208 void removeExtraModeline ( int,int );
00209 void setResolution ( int,int,int );
00210 void addResolution ( int,int,int );
00211 void removeResolution ( int,int,int );
00212 void setVirtualResolution ( int,int,int );
00213 void removeVirtualResolution ( int );
00214 void setColorDepth ( int );
00215 bool enable3D ( void );
00216 bool disable3D ( void );
00217 void setDisplaySize ( int,int );
00218 void setDisplayRatioAndTraversal ( double ,int, int );
00219 void setHsyncRange ( double,double );
00220 void setVsyncRange ( double,double );
00221 void setPreferredMode ( const QString& );
00222 void enableDPMS ( void );
00223 void disableDPMS ( void );
00224 void setMonitorVendor ( const QString& );
00225 void setMonitorName ( const QString& );
00226 void setCDBMonitor ( const QString& );
00227 QList<QString> getCDBMonitorVendorList ( void );
00228 QList<QString> getCDBMonitorModelList ( const QString& );
00229 Q3Dict<QString> getCDBMonitorData ( const QString&, const QString& );
00230 Q3Dict<QString> getCDBMonitorIDData ( const QString& );
00231 void setCDBMonitorData (
00232 const QString&, const QString&,
00233 const QString&, const QString&
00234 );
00235
00236 public:
00237 QList<QString> getResolutions ( int );
00238 QList<QString> getResolutionsFromFrameBuffer (void);
00239 QList<QString> getResolutionFromServer ( void );
00240 QList<QString> getResolutionsFromDDC1 ( void );
00241 QList<QString> getResolutionsFromDDC2 ( void );
00242 QList<QString> getDisplaySize ( void );
00243 QList<QString> getDisplayRatio( void );
00244 QString getDisplayTraversal ( void );
00245 QList<QString> getHsyncRange ( void );
00246 QList<QString> getVsyncRange ( void );
00247 bool is3DEnabled ( void );
00248 bool is3DCard ( void );
00249 bool isDualHeadCard ( void );
00250 bool isXineramaMode ( void );
00251 bool DPMSEnabled ( void );
00252 int getFBKernelMode ( const QString&,int );
00253 int setFBKernelMode ( int );
00254 bool getKMSStatus ( void );
00255 int getColorDepthFromServer ( void );
00256 QString getMonitorVendor ( void );
00257 QString getMonitorName ( void );
00258 QString getColorDepth ( void );
00259 QString getVirtualResolution ( int );
00260 QString getDualHeadProfile ( void );
00261 QString getModelineAlgorithm ( void );
00262 bool willCalculateModelines ( void );
00263
00264 public:
00265 bool selectDesktop (int);
00266
00267 public:
00268 SaXManipulateDesktop (
00269 SaXImport*, SaXImport*, SaXImport*, int = 0
00270 );
00271 };
00272 }
00273 #endif