kzkの日記: KDEのFTPクライアント(自作) part 5
ListingをKIOに変更中。
したら色々問題が出て来て改編箇所が多くて(汗)
というわけでクラス関係を整理してますた。
このぐらいの規模になると簡単にプログラム構造も変更できないなぁ。
設計の良さというものがこれから大いに影響して来るだろう。
結構考えた末の構造だからたぶんいけるとは思うが。
何より、世の中に出回っているプログラムはこんな行数じゃ到底ないし。
みなさんすごすぎ。
--
なんやかんや言うだけじゃなく一応技術的な物も残しておこう。
以下Listingの方法。
114 | KIO::ListJob* job = KIO::listDir( KURL( path ), false, true );
115 | QObject::connect( job, SIGNAL( entries(KIO::Job*, const KIO::UDSEntryList&)),
116 | this, SLOT(slotLocalListingEntries(KIO::Job*, const KIO::UDSEntryList&)) );
-----------------------------------
547 |void KzDirectoryManager::slotLocalListingEntries( KIO::Job *job, const KIO::UDSEntryList& list ){
548 |
549 | UDSEntryListConstIterator it=list.begin();
550 | for (; it != list.end(); ++it) {
551 | UDSEntry::ConstIterator it2 = (*it).begin();
552 |
553 | KFileItem* fitem = new KFileItem( (*it), KURL( localOperator.path() ) );
554 |
555 | if( fitem->name() != "." && fitem->name() != ".." ){
556 |
557 | // read configration
558 | KConfig* conf = KGlobal::config();
559 | conf->setGroup( "Display" );
560 | bool isListDotFile = conf->readBoolEntry( "displaydotfile", false );
561 |
562 | if( isListDotFile || fitem->name().startsWith(".") != true ){
563 | KzListViewItem* i = new KzListViewItem( m_pView->localListView(), *fitem );
564 | m_pView->localListView()->setIcon( i );
565 | }
566 | }
567 | }
568 |
569 | m_pView->localListView()->setSorting( COLUMN_NAME, FALSE );
570 | m_pView->localListView()->sort();
571 |}
UDSEntryListがどうたらこうたらと API 表みたら書いてあるのですが、
KFileListというKIOと非常に親和性の高いクラスが用意されています。
素直に利用しましょう。
--
んで、速度の方は問題ないと思われます。
↓にKDirListerなんて文字もちらつきますがそれはまた今度。
http://developer.kde.org/documentation/library/cvs-api/classref/kio/
KDirListerのソースを覗くとどうやらChacheを駆使しまくっている気配がする。(約2k行)
早いのかなぁ?
Grep かけてみるとKonqueror では使われていた。
そんなにメリットを感じられないのでパス。
--
ore.mind().addSaparator();
私はあまりひきずらない方なので。
昨日にしばられる漸化式みたいな生き方だけはしたくないので。
KDEのFTPクライアント(自作) part 5 More ログイン