理論
開発プログラマーが利用できるほとんどのソリッドクラスはkdelibsに含まれており、次のものが含まれます。
Solid :: AcAdapterはACアダプターで動作します
Solid :: AudioInterfaceサウンドカードの操作
Solid ::バッテリーバッテリー管理
ソリッド::ブロックデバイスでのブロック作業
ソリッド::ボタン特定のボタン(リッド、パワー、スリープ)で動作
Solid ::カメラデジタルカメラでの作業
Solid :: Device特定の機器がシステムで利用可能かどうかをアプリケーションが検出できるようにします。
Solid :: DeviceInterfaceすべてのデバイスインターフェイスの基本クラス
Solid :: DeviceNotifierは、操作中に使用可能なすべての接続デバイスについてシステムに警告します
Solid :: DvbInterface DVB(デジタルビデオブロードキャスト)デバイスの操作
Solid :: GenericInterfaceデバイスを直接操作するための一般的なインターフェイス
Solid :: NetworkInterfaceネットワークインターフェイスの操作
ソリッド::ネットワーキング::ネットワークステータスの変更に関する通知システムアラート(不明、未接続、切断、接続、接続)
ソリッド:: PowerManagement :: Notifier System Power Alert
Solid :: OpticalDisc光学メディアの使用
Solid :: OpticalDrive光学ドライブの操作
Solid :: PortableMediaPlayerポータブルプレーヤーでの作業
Solid :: Predicateデバイスが特定のタイプに属しているかどうかを確認できます
ソリッド::プロセッサプロセッサでの作業
Solid :: SerialInterfaceシリアルデバイスの操作
Solid :: StorageAccessパーティションストレージデバイス
Solid :: StorageDriveストレージデバイスの操作
Solid :: StorageVolume情報を含む可能性のあるすべてのデバイスで動作
Solid ::ビデオビデオ処理デバイスでの作業
これらのクラスのセットを使用すると、システムで使用可能なデバイスに関する情報を簡単に取得できます。
練習する
簡単な例を書いてみましょう。 いくつかのソリッド機能を使用します。
実験を開始するには、必要なdevパッケージをシステムにインストールする必要があります。 命じる
$ sudo aptitude install automoc cmake kdelibs5-dev
すべてがダウンロードされインストールされるまで5分間待ちます。
アプリケーションは3つのファイルで構成され、2つの機能を実装します。
1)起動時にシステムで使用可能なすべてのデバイスのリスト
2)システムに新しく接続されたすべてのデバイスを追跡します。
app.h:
#include <solid/devicenotifier.h>
#include <solid/device.h>
#include <QApplication.h>
#include <QDebug.h>
class App : public QApplication
{
Q_OBJECT
public :
App( int args, char **argv);
virtual ~App();
private slots:
void deviceAdded( const QString &udi);
void deviceRemoved( const QString &udi);
};
* This source code was highlighted with Source Code Highlighter .
app.cpp:
#include "app.h"
App::App( int args, char **argv )
: QApplication(args, argv)
{
//
qDebug() << "===== All available devices =====" ;
foreach ( const Solid::Device &device, Solid::Device::allDevices())
{
qDebug() << device.udi().toLatin1().constData();
}
//
qDebug() << "\n===== Start monitoring for new =====" ;
Solid::DeviceNotifier *notifier = Solid::DeviceNotifier::instance ();
connect(notifier, SIGNAL(deviceAdded ( const QString &)), this , SLOT(deviceAdded(QString const &)));
connect(notifier, SIGNAL(deviceRemoved(QString const &)), this , SLOT(deviceRemoved(QString const &)));
}
void App::deviceAdded(QString const &udi)
{
qDebug() << "Added" << udi.toLatin1().constData();
}
void App::deviceRemoved(QString const &udi)
{
qDebug() << "Removed" << udi.toLatin1().constData();
}
App::~App()
{
//TODO
}
* This source code was highlighted with Source Code Highlighter .
main.cpp:
#include "app.h"
int main( int args, char **argv)
{
App app( args, argv );
return app.exec();
}
* This source code was highlighted with Source Code Highlighter .
CMakeLists.txt:
project(solid)
find_package(KDE4 REQUIRED)
include_directories( ${KDE4_INCLUDES} )
set (mySources main.cpp app.h app.cpp)
kde4_add_executable(solid ${mySources})
target_link_libraries(solid ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} )
install(TARGETS solid DESTINATION bin)
* This source code was highlighted with Source Code Highlighter .
これらすべてをディレクトリに保存し、順番に実行します。
cmake .
make
./solid
* This source code was highlighted with Source Code Highlighter .
すべてが正常に連携した場合、起動後にシステム内のすべてのデバイスのリストが表示されます。
次に、USBフラッシュドライブまたはmp3プレーヤーをusbコネクタに接続して、次のようなものを確認してください。
Added /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4
Added /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_if0
Added /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_usbraw
Added /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_if0_scsi_host
Added /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_if0_scsi_host_scsi_device_lun0
Added /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_if0_scsi_host_scsi_device_lun0_scsi_generic
Added /org/freedesktop/Hal/devices/storage_serial_JetFlash_TS2GJFV60_51ZT24OY_0_0
Added /org/freedesktop/Hal/devices/volume_uuid_4979_CC88
* This source code was highlighted with Source Code Highlighter .
デバイスの電源をオフにして、以下を参照してください。
Removed /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_if0_scsi_host_scsi_device_lun0_scsi_generic
Removed /org/freedesktop/Hal/devices/volume_uuid_4979_CC88
Removed /org/freedesktop/Hal/devices/storage_serial_JetFlash_TS2GJFV60_51ZT24OY_0_0
Removed /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_if0_scsi_host_scsi_device_lun0
Removed /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_if0_scsi_host
Removed /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_if0
Removed /org/freedesktop/Hal/devices/usb_device_58f_6387_51ZT24OY_4_usbraw
* This source code was highlighted with Source Code Highlighter .
これはすべて、すべてがうまく機能し、堅実に機能し、バックエンドとしてHALのみを使用することを意味します。
メモを準備するために、api.kde.orgサイトの資料が使用されました。 チュートリアル、APIドキュメントなどを含むSolidに関する包括的な情報を見つけることができます。