00001 00023 #ifndef SYSINFO_H 00024 #define SYSINFO_H 00025 00026 #include "graphic_items.h" 00027 00028 class AbstractSysInfo : public GraphicText 00029 { 00030 Q_OBJECT 00031 Q_PROPERTY(SysUnit unit READ unit WRITE setUnit) 00032 Q_PROPERTY(QString postfix READ postfix WRITE setPostfix) 00033 Q_PROPERTY(QString prefix READ prefix WRITE setPrefix) 00034 Q_PROPERTY(int precision READ precision WRITE setPrecision) 00035 Q_ENUMS(SysUnit) 00036 00037 public: 00038 enum SysUnit { Bit, Byte, Kilobyte, Megabyte, Gigabyte, Terrabyte }; 00039 00040 AbstractSysInfo() : m_precision(2), m_unit(Kilobyte) {}; 00041 bool init(); 00042 inline QGraphicsItem* graphicsItem() { return this; }; 00043 inline bool hasTimer() { return true; } 00044 inline void setUnit(SysUnit unit) { m_unit = unit; } 00045 inline void setPostfix(const QString& postfix) { m_postfix = postfix; } 00046 inline void setPrefix(const QString& prefix) { m_prefix = prefix; } 00047 inline void setPrecision(int precision) { m_precision = precision; } 00048 inline SysUnit unit() { return m_unit; } 00049 inline QString postfix() const { return m_postfix; } 00050 inline QString prefix() const { return m_prefix; } 00051 inline int precision() { return m_precision; } 00052 00053 protected: 00054 QString doubleToString(double); 00055 void openProcDevice(const QString&, int skipLines = 0); 00056 void closeProcDevice(); 00057 QString line() const; 00058 bool nextLine(); 00059 00060 private: 00061 QFile m_device; 00062 QString m_line; 00063 QTextStream m_allLines; 00064 QString m_postfix; 00065 QString m_prefix; 00066 int m_precision; 00067 SysUnit m_unit; 00068 }; 00069 00070 class MemoryInfo : public AbstractSysInfo 00071 { 00072 Q_OBJECT 00073 Q_PROPERTY(MemoryType type READ type WRITE setType) 00074 Q_ENUMS(MemoryType) 00075 00076 public: 00077 enum MemoryType { TotalMemory, FreeMemory, UsedMemory, TotalSwap, FreeSwap, UsedSwap }; 00078 00079 MemoryInfo(): m_type(UsedMemory) {}; 00080 bool init(); 00081 void timer(); 00082 inline void setType(MemoryType type) { m_type = type; } 00083 inline MemoryType type() { return m_type; } 00084 00085 private: 00086 QMap<QString, double> m_memInfo; 00087 MemoryType m_type; 00088 }; 00089 00090 class CPUInfo : public AbstractSysInfo 00091 { 00092 Q_OBJECT 00093 Q_PROPERTY(CPUType type READ type WRITE setType) 00094 Q_ENUMS(CPUType) 00095 00096 public: 00097 enum CPUType { CPUMhz, Modelname, VendorID, Bogomips, CacheSize }; 00098 00099 CPUInfo() : m_type(CPUMhz) {}; 00100 bool init(); 00101 void timer(); 00102 inline void setType(CPUType type) { m_type = type; } 00103 inline CPUType type() { return m_type; } 00104 00105 private: 00106 QMap<QString, QString> m_cpuInfo; 00107 CPUType m_type; 00108 }; 00109 00110 class HDDInfo : public AbstractSysInfo 00111 { 00112 Q_OBJECT 00113 Q_PROPERTY(QStringList partition READ partitions WRITE setPartition) 00114 00115 public: 00116 bool init(); 00117 void timer(); 00118 inline void setPartition(const QStringList& partNames) { m_devName = partNames.at(0); } 00119 inline QStringList partitions() { return m_partNames; } 00120 00121 private: 00122 QString m_devName; 00123 QStringList m_partNames; 00124 }; 00125 00126 class TimeInfo : public GraphicText 00127 { 00128 Q_OBJECT 00129 Q_PROPERTY(QString format READ format WRITE setFormat) 00130 Q_PROPERTY(bool analog READ analog WRITE setAnalog) 00131 00132 public: 00133 TimeInfo(); 00134 bool init(); 00135 void timer(); 00136 void paint(QPainter*, const QStyleOptionGraphicsItem* , QWidget* widget = 0); 00137 QRectF boundingRect() const; 00138 inline bool hasTimer() { return true; } 00139 inline void setFormat(const QString& format) { m_format = format; } 00140 inline void setAnalog(bool analog) { prepareGeometryChange(); m_analog = analog; } 00141 inline QString format() const { return m_format; } 00142 inline bool analog() { return m_analog; } 00143 00144 private: 00145 QString m_format; 00146 QTime m_time; 00147 bool m_analog; 00148 }; 00149 00150 class DateInfo : public GraphicText 00151 { 00152 Q_OBJECT 00153 Q_PROPERTY(QString format READ format WRITE setFormat) 00154 00155 public: 00156 DateInfo(); 00157 bool init(); 00158 void timer(); 00159 inline bool hasTimer() { return true; } 00160 inline void setFormat(const QString& format) { m_format = format; } 00161 inline QString format() const { return m_format; } 00162 00163 private: 00164 QString m_format; 00165 }; 00166 00167 class NetworkInfo : public AbstractSysInfo 00168 { 00169 Q_OBJECT 00170 Q_PROPERTY(QStringList device READ device WRITE setDevice) 00171 Q_PROPERTY(NetworkType type READ type WRITE setType) 00172 Q_ENUMS(NetworkType) 00173 00174 public: 00175 enum NetworkType { RXBytes, RXPackets, TXBytes, TXPackets }; 00176 00177 NetworkInfo() : m_type(RXBytes) {}; 00178 bool init(); 00179 void timer(); 00180 inline void setDevice(const QStringList& device) { m_devName = device.at(0); } 00181 inline void setType(NetworkType type) { m_type = type; } 00182 inline QStringList device() { return m_deviceNames; } 00183 inline NetworkType type() { return m_type; } 00184 00185 private: 00186 QStringList m_deviceNames; 00187 QString m_devName; 00188 NetworkType m_type; 00189 }; 00190 00191 #endif