KDE4向けの記述:ソリッド

KDE4のhabratopic Pillarsを読んだ 固体 、このフレームワークが開発者にとって非常に便利かどうか、実際に何を知っているかを確認することにしました。



理論



開発プログラマーが利用できるほとんどのソリッドクラスは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に関する包括的な情報を見つけることができます。




All Articles