KConfigEditor
はじめに
利用ユーザーのアプリケーション固有の設定ファイルを作成し、設定の保存・読み込みをしましょう。
ここではウィンドウサイズ、ツールバーの状態、ファイルを開く・閉じるのスタートディレクトリあたりを扱ってみましょう。
KXMLActionEditorをベースに、アプリケーション名はKConfigEditorとします。
準備
ヘッダファイルで以下を定義します。
void readConfig();
void saveConfig();
QString m_startdir;
コンストラクタとデストラクタを以下のようにします。
{
txtEdit = new KTextEdit( this );
setCentralWidget( txtEdit );
setupAction();
setupStatusBar();
readConfig();
fileNew();
}
KConfigEditor::~KConfigEditor()
{
saveConfig();
}
それから<kconfig.h>をインクルードしてください。
開く・保存のディレクトリを扱うため以下のように変更してください。
{
KURL url = KFileDialog::getOpenURL( m_startdir, i18n("*.txt|Text File (*.txt)\n*|All files") );
if( url.isEmpty() ) return;
if( !url.isLocalFile() ){
KMessageBox::sorry( this, i18n("KConfigEditor can not handle remote files yet") );
return;
}
m_startdir = url.directory();
GfileName = url.path();
if( !GfileName.isEmpty() ){
QFile file( GfileName );
if ( !file.open( IO_ReadOnly ) ){
KMessageBox::sorry( this, i18n("KConfigEditor can not open the file") );
return;
}
QTextStream ts( &file );
QString txt = ts.read();
txtEdit->setText( txt );
txtEdit->viewport()->setFocus();
setCaption( GfileName );
}
}
bool KConfigEditor::fileSaveAs()
{
bool blRtn = false;
KURL url = KFileDialog::getSaveURL( m_startdir, i18n("*.txt|Text File (*.txt)\n*|All files") );
if( url.isEmpty() ) return blRtn;
if( !url.isLocalFile() ){
KMessageBox::sorry( this, i18n("KConfigEditor can not handle remote files yet") );
return blRtn;
}
m_startdir = url.directory();
GfileName = url.path();
if( !GfileName.isEmpty() ) {
blRtn = fileSave();
setCaption( GfileName );
}
return blRtn;
}
設定の読み込み・保存
設定ファイルはKGlobal::config()から取得します。
読み込み・保存は以下のようになります。
{
KConfig *conf = KGlobal::config();
conf->setGroup("main");
m_startdir = conf->readEntry( "startdir", QString::null );
applyMainWindowSettings( conf, "window" );
}
void KConfigEditor::saveConfig()
{
KConfig *conf = KGlobal::config();
conf->setGroup("main");
conf->writeEntry( "startdir", m_startdir );
saveMainWindowSettings( conf, "window" );
}
m_startdirについてはWindowsのiniファイルみたいな扱いですね。
ウィンドウのサイズ、ツールバーの状態はひとつひとつ自分で保存してもいいのですが、
(apply|save)MainWindowSettingsという関数でまとめてできます。
さらに詳しいKConfigの使いかたはリファレンスマニュアルを御覧下さい。
ここで利用したのがQString型でしたが、他にも色々な変数のタイプが扱えます。
おわりに
今回作成した全てのファイルはkconfigeditor.tar.gzからダウンロードすることができます。