トップページ⇒linux
976コメント637KB

Kita - 2ch client for KDE part2

■ このスレッドは過去ログ倉庫に格納されています
0001kitaの中の人 ◆KITAulkOso 04/07/16 00:31ID:IZzU7SYf
KitaはKDE用2ちゃんねるブラウザです。
名前の由来はKDEの'K'に「板(board)」を加えたのと、キターー(゜∀゜)ーー!!から来てます。

Kitaのウェブサイト
http://kita.sourceforge.jp/
http://sourceforge.jp/projects/kita/

Kita Wiki
http://kita.sourceforge.jp/cgi-bin/hiki/hiki.cgi

前スレ
Kita - 2ch client for KDE
http://pc5.2ch.net/test/read.cgi/linux/1069738960/

前々スレ(DAT落ち)
おいお前ら! GTK+使ってLinux版かちゅーしゃ作れや
http://pc.2ch.net/test/read.cgi/linux/1022744633/
0554login:Penguin04/11/17 22:28:15ID:6Gva/oFt
>>552
kitaのtar玉を展開して出てくる"INSTALL"って名前のファイルを穴があくまで読みやがれ
055542104/11/17 23:12:14ID:l27aQPKp
>>549
その辺はいま直してるとこなので気にしないでおいて下さい。

でパッチ。内容は昨日話したあたりのところ。>>543からの差分でkitaで-p0。
サイズが思ったより大きくなってしまったorz。これでやっとデバッグモードに入れるかな・・

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1117.txt

・ViewPosをキャッシュ処理してスレ一覧の既読数に表示

Thread::m_viewPosというパラメータにキャッシュすることに。値を取得する関数は
DatManager::getViewPos()、セットするには DatManager::setViewPos()。

ついでにThread::m_resNumと Thread::m_readNum も作って resNum と readNum の
管理もThreadクラスに移し、新設したKitaSubjectView::updateListViewItem()でやってる
みたいに、Threadクラスのポインタから直接レス数などを取得できるようにしたのでパフォーマンスが
向上しました(まあ本当はクラス間の結合度が上がるのでポインタを使うのはいくないんですが、
KitaSubjectView::updateListViewItem()は特例ということで)。これでThreadInfoクラスは
旧バージョンとの互換性のために残しているだけになります。というかぶっちゃけThreadInfoクラスが
無くてもKitaは動きます。ThreadIndex::saveIndex()の/* save "cache" */のところで
ThreadInfoクラスにレス数などの情報を"おすそわけ"しています。

つづく
055642104/11/17 23:14:47ID:l27aQPKp
つづき

・>>544の(3)のThread::m_cachedはやっぱり廃止。

Thread::m_readNum == 0 かどうかでキャッシュにログがあるかどうか判定することに。

・idxの保存、読み込みまわりのコード整理

で、idxの保存と読み込みの場所とタイミングが>>511からすこし変わったのでメモ

----------------------------------------------------------------
(1) idxにスレ情報を保存する場所(タイミング)

a) キャッシュにあるスレを表示した直後(鯖からデータをロードする前)に
DatInfo::initPrivate() からThreadIndex::saveIndex()を呼ぶ。

b) スレのロードが終わったときに
DatInfo::slotFinishLoad()からThreadIndex::saveIndex()を呼ぶ。

c) ViewPosを変更するときは はDatManager::setViewPos()で直接 ViewPos を保存

(2) idxからスレ情報を取得する場所(タイミング)

a) 板のスレリストを取得するとき(初回のみ1回だけ)
BoardManager::readSubjectTxt()からThreadIndex::loadIndex()を呼ぶ。

b) dat落ちログのリストを取得するときに
BoardManager::getCachedThreadList()からThreadIndex::loadIndex()を呼ぶ。

c) 起動時にお気に入りスレを登録するときに
FavoriteThreads::processThreadNode()からThreadIndex::loadIndex()を呼ぶ。
0557kitaの中の人 ◆KITAulkOso 04/11/18 02:28:48ID:aa1PkYlF
>>543>>555
merged.
あぼーんがあったりスレ停止があったときにsubjectがおかしくなる問題があったので、
ひとまず直しておきました。DatInfo::parseDat()です。

今のところの問題点は
・「ここまで読んだ」をセットしている場合、スレ一覧でのマークが緑色になる
くらいでしょうか。

古いキャッシュの廃止は移行環境が整ってからになるかな。

>>548
了解。それだけ遅ければキャッシュ利用した方がいいですね。
055842104/11/18 02:51:14ID:oF+1Wu7X
まあ相変わらず仕事してて起きてる訳ですがorz

>>557
> ・「ここまで読んだ」をセットしている場合、スレ一覧でのマークが緑色になる

マークなんですが、KitaSubjectView::updateListViewItem()を見れば分かると
思いますが、現在の仕様ではViewPosとResNumでは無くて、ReadNumとResNum
の差を見て付けています。つまり鯖側にあるdatとキャッシュにあるdatが違って
いると赤、同じなら緑という感じで。

「既得数(ReadNum)」のcolumnがあればマークの動作が分かりやすくなるかなとも
思ったんですが、最近項目が増え気味なので入れても良いものかどうか躊躇中。
>>381みたいにスレ一覧の項目の表示ON/OFFがあれば良いんでしょうけど・・・

> キャッシュ利用

Threadクラスによるスレ情報のキャッシュ方式に移行したらスレ一覧の表示が
3割ほど速くなったような気が。ThreadInfo利用時のQMapの検索速度ってそんな
に遅かったのかw
055955204/11/18 12:00:42ID:Z8mpNkQ8
>>553,554
CPPFLAGS=-L/usr/local/libを追加することでconfigureはできるようになりました
でも,結局コンパイルでもlibart_lgpl_2がないといわれるので,/usr/lib/に
リンクを作ることで解決しました
スマートな解決ではないですが,無事kitaから書き込むことができました
どうもでした
0560kitaの中の人 ◆KITAulkOso 04/11/18 23:25:48ID:aa1PkYlF
お気に入り整理のUI作る前に新ファイルフォーマット考えるの忘れてたorzので
作りました。何か気になる点があったら言ってください。
http://kita.sourceforge.jp/cgi-bin/hiki/hiki.cgi?%A5%E1%A5%E2+-+%A4%AA%B5%A4%A4%CB%C6%FE%A4%EA%A4%CE%B0%DC%B9%D4

・同じURLで2つ別の名前が付けられないが問題ないか
(名前については問題ないはずだけど他の属性で問題が出ないか)
・スレを識別するキーはdatファイルのURLでいい?
・互換性について(移行は当然サポートします)。

>>558
> >>381みたいにスレ一覧の項目の表示ON/OFFがあれば良いんでしょうけど・・・
んじゃそっちを先に対応します。お気に入り整理は今回は間に合いそうにないので
あきらめますたorz
056142104/11/19 00:55:35ID:JmaYCgMd
現在バグ取り中。変更点が多いだけあって結構バグが多いなあw
とりあえず

datmanager.{cpp,h}
datinfo.{cpp,h}

あたりをメインに直しているので、2,3日はその辺をあまりいじらないでおいて下さい。

> > >>381みたいにスレ一覧の項目の表示ON/OFFがあれば良いんでしょうけど・・・
> んじゃそっちを先に対応します。

ではそちらはおながいします。

お気に入り整理の新ファイルフォーマット

> 同じURLで2つ別の名前が付けられないが問題ないか
エイリアス機能ってことですか?まあ、あればあったで良いけど無くても良いような。

> ・スレを識別するキーはdatファイルのURLでいい?
どうせ内部的にはKita::getDatURL()で違いが吸収される(dat形式になる)ので、
read.cgi形式でもdat形式でもどっちでも良いと思いますがdat形式が無難かと。

> 板名の情報は誰が管理?
これはBoardManager(とboard_list)が全部管理してるので、ここでは特に
考えなくても良いと思われ。

> スレ名、レス数は.idxから取得
レス数はidxから取るので必要ないと思いますが、スレ名は手動で編集するときに
便利なので、使わないとしてもラベルとして入れておいた方が良いかも。
0562kitaの中の人 ◆KITAulkOso 04/11/19 01:42:13ID:YJYSSRcW
スレ一覧の項目On/Offは一筋縄でいかないようなので、
先に、カラムの順序、サイズの保存を実装する予定。
手動でリサイズ&移動すればOff状態とまああまり変わらないということでw

ちなみに、サイズと順序はKListView::saveLayout()で保存できるようですが、
複数ビューがあるので同期をどうやって取ろうかなと悩んでます。

>>561
> エイリアス機能ってことですか?まあ、あればあったで良いけど無くても良いような。
いや、とりあえず制限事項になるので挙げてみただけです。
逆に、1つ編集したら同じURLは全て一緒になるのでむしろこの方がよいかなと。

> これはBoardManager(とboard_list)が全部管理してるので、ここでは特に
> 考えなくても良いと思われ。
了解。まあ、板情報を入れるのは簡単なので実装してから考えます。
056342104/11/19 02:08:30ID:JmaYCgMd
相変わらずまだ起きてる訳ですがw

> スレ一覧の項目On/Off

GUIを作るのが面倒ならとりあえずKitaConfigかあるいは別の設定ファイルを
作ってそこで手動でOn/Offするようにしてみてはどうでしょうか。あとスレッド
ビューのツールバーのボタンの表示On/Offもあると良いなあとか言ってみるテスト。

同期はSignalCollection経由で他のサブジェクトビューに更新があったことを
知らせるのが常套手段だと思いますが、面倒なら次に開いたビューから変更って
タイプでも良いんじゃないですかね・・・
056442104/11/19 23:14:01ID:iR+YSKnS
パッチ。cvsからの差分でkitaで-p0。デバッグとパフォーマンス向上が主な内容です。
以後は肉の日までテストしながら細かいデバッグパッチを出していって、テストが終わ
った部分から順次qDebugを消して行く予定。

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1119.txt

・ここまで読んだの処理で変だったところを修正

・スレ一覧からのログ削除高速化

DatManager::deleteCache()のとこ。従来はいちいちDatInfoを作って
いたため削除が激重だったのを、DatInfoを作らないでログを消すように変更

・ついでにDatManager コード整理

主にDatManager::getDatInfo()のあたり。あといちいちmutexかけてたのをやめて
DatManager::boardURL()みたいなobsoleteな関数をいくつか削除。これでだいぶ
見やすくなったかな。

・ThreadIndex::loadIndex()、ThreadIndex::saveIndex()を高速化

項目毎にいちいちファイルをオープンしてたのをやめ

・BoardManager::getBoardData()とかKita::convertURL()をキャッシュ使って高速化

・その他細かいデバッグいろいろ
056542104/11/20 00:07:03ID:AKAy4KPd
いまテストしててひとつバグを見つけたのでパッチ。

既に移転済みの板を開いて(もちろんスレ一覧は空白)から板の移転を行った後に再度板を開くと
既読のはずのスレが未読表示になるバグの修正。

最初に板を開いたときにBoardData::m_readIdxがTRUEにセットされたため、それを
リセットしないとidxの読み込みがおこなわれないというのが理由。

*** libkita-org/boardmanager.cpp 2004-11-19 23:01:23.000000000 +0900
--- libkita/boardmanager.cpp 2004-11-19 23:45:34.992309872 +0900
***************
*** 906,911 ****
--- 906,915 ----
keyHosts.prepend( newhost );
bdata->createKeys( keyHosts );

+ /* reset BoardData */
+ bdata->setReadIdx( FALSE );
+ bdata->setSettingLoaded( FALSE );
+

/*---------------------------*/
/* move cache dir */
056642104/11/21 00:08:04ID:WvvQKFPl
パッチ。といっても特に変更点は無くて、DownloadManagerをテストして特に問題が
無かったのでqDebugを消してコメント入れただけ。libkitaで pacth < patch-1120.txt

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1120.txt
0567kitaの中の人 ◆KITAulkOso 04/11/21 01:58:59ID:K8+Vt0l8
明日あたりにsnapshot出します。

>>564-566
merged.

> 同期はSignalCollection経由で他のサブジェクトビューに更新があったことを
> 知らせるのが常套手段だと思いますが、面倒なら次に開いたビューから変更って
> タイプでも良いんじゃないですかね・・・
とりあえずそれで実装しました。
リサイズ時にいちいち書き込みするので遅いかなぁと思ったんですが、
うちの環境だと問題なかったのでとりあえずそのまま。

しかし一番最後のCokumnだけhideColumnが効いてないみたい…。なぜだ…
0568login:Penguin04/11/21 07:55:36ID:YtiHxrKy
ほかのKDEアプリにはない現象なんでKita特有なんじゃないかと思うんですが、
ウインドウを最大化している状態でシェードし、元に戻すと強制的に最大化が
解除されてしまいます。

すごく使いにくいんですが、これは仕様でしょうか?
056942104/11/21 13:53:06ID:yZR+sU9h
>>568修正。cvs差分kitaで-p0。

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1121.txt

原因は KitaThreadView::setFocus() の if ( topWidget->isMinimized() ) topWidget->showNormal();
の一文です。最小化してる状態からスレッドビューにフォーカスが移るとウィンドウが通常状態に戻ります。

何故setFocus()に topWidget->showNormal() なんてコードが入っているかと言うとウィンドウの切替え処理を行うためです。

つづく。
057042104/11/21 13:54:26ID:yZR+sU9h
つづき。例えば「3」のボタンを押すと

(1) KitaTabWidgetBase::setupActions()で new KAction( i18n( "Switch to Thread" ), Key_3 )が定義
されてるので 3 を押すとsignalcollectionにswitchToThread()シグナルが飛ぶ

(2) signalcollection::switchToThread() は KitaThreadDock::setupAsMainView() と
KitaThreadDock::setupAsKitaNavi() で KitaDockWidgetBase::slotShowDock() にコネクトされているので
KitaDockWidgetBase::slotShowDock()が呼び出される。

(3) KitaDockWidgetBase::slotShowDock() で ShowDockEvent() イベントが作られる

(4) イベントループに戻った後、KitaDockWidgetBase::customEvent() が呼び出されて
KitaDockWidgetBase::showDock() が呼び出される

(5) そこの if ( w ) w->slotCurrentChanged( w->currentPage() ); から
KitaTabWidgetBase::slotCurrentChanged() が呼び出される

(6) w->setFocus(); より KitaThreadView::setFocus() が呼び出される。

という流れでKitaThreadView::setFocus()が呼び出されてスレッドビューにフォーカスが移ります。ここで
画像ビュワーみたいにメインウィンドウから切り離したウィンドウ上で「3」を押したときにメインウィンドウが
最小化されてるとウィンドウが切り替わらないので最小化されてるメインウィンドウを表示させるため
topWidget->showNormal()を呼んでいます。とまあ原因は分かっていたんですが、単にtopWidget->show()と
しただけでは最小化は解除されないため、解決方法が良く分からなかったので突っ込まれるまで見て見ぬふりしてましたw

で超アドホックな解決方法としてはKitaThreadDock::slotShowThreadDock()というスロットを作って
signalcollection::switchToThread()シグナルをそこにコネクトしてそこでtopWidget->showNormal();
することに。これで一応最小化状態からフォーカスが移ったときに最大化状態が外れることはなくなります。
最小化状態で他のウィンドウから「3」を押したときに最大化状態が外れる問題はそのうち直すってことで。
0571kitaの中の人 ◆KITAulkOso 04/11/21 14:59:19ID:K8+Vt0l8
snapshot
http://kita.sourceforge.jp/snapshot/kita-20041121.tar.gz
>>569まで入れてます。

あとスレ一覧でサイズを変更するとその位置が保存されるようにしてます。
お気に入りはその情報を利用してないですが…やっぱり対応した方がいいかな?

とりあえず致命的な問題はないはず。
お気に入り整理は次(以降)にしますorz
0572kitaの中の人 ◆KITAulkOso 04/11/21 19:47:05ID:K8+Vt0l8
書き忘れてたけど>>571のsnapshotでrpmを作ろうとするとエラーが出るので
%filesセクションのkitapart/kita*ui.rcを削除してください。
057342104/11/21 22:14:01ID:yZR+sU9h
乙です。snapshotですが、今回のは以前までのと比べて危険度は低いですが、恐い人は
一応バックアップを取ってから起動してください。

で、そのsnapshotですが、Qt3.1だとQListView::hideColumn()がエラーを出します。
マニュアルを見る限りだとsetColumnWidth( column, 0 )にすれば良いのかな。

あと cache と idx の互換性問題のテストをしたのでThreadIndexクラスを若干修正
しました。libkita で patch < patch-1121-2.txt

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1121-2.txt

テスト手順は、例の如くKNOPPIX3.6を使ってまっさらな状態から

(1) kita-0.172.0 をインストール
(2) 適当にスレを見る
(3) snapshot を make
(4) snapshot を起動してidxのViewPosからReadNumを作るかチェック
(5) idxを全部消してからsnapshotを起動してcacheからidxを作るかチェック
(6) 適当にスレを見る
(7) kita-0.172.0を起動してcacheが保存されてるかチェック

ってな感じ。明日はAccessクラスあたりを軽くテストする予定。
0574kitaの中の人 ◆KITAulkOso 04/11/22 02:01:43ID:BQLsuu/N
>>573
merged.
気になったのが、ロードしてもスレ一覧の既読数が更新されないこと。
スレッドのタブを閉じたらその時にアップデートされるようですが。

ロード時に既読数が更新されるのも違和感があるので、
意図したものでなければ直さない方がいいかもしれません。

>>558
> マークなんですが、KitaSubjectView::updateListViewItem()を見れば分かると
> 思いますが、現在の仕様ではViewPosとResNumでは無くて、ReadNumとResNum
> の差を見て付けています。つまり鯖側にあるdatとキャッシュにあるdatが違って
> いると赤、同じなら緑という感じで。
やっぱりViewPosとResNumの差を取るようにしてください。
ユーザの観点からすると、

赤:まだ見てないレスがある
緑:もう見るレスがない

というのが分かりやすいので。
057542104/11/22 02:23:08ID:UnXhyNRq
寝る前に・・・

>>574
> 気になったのが、ロードしてもスレ一覧の既読数が更新されないこと。

これは正常動作です。今まではViewPosがReadNumも兼ねていたため、変則的に
ロード直後にViewPos=ResNumにしていたのですが、今回からViewPosとReadNumが
分離されたため、あくまでViewPosはここまで読んだの位置になります。つまり
スレッドのタブを閉じた時点でここまで読んだが最後に移動したということになる
ためその時点でアップデートされます。

> やっぱりViewPosとResNumの差を取るようにしてください。

しばらくはサブジェクトビュー周りはいじる予定は無いのでこの辺りは任せます。

あと明日はaccess.cppだけでなくてkita_misc.cppもちょっとだけいじるかも・・・
0576kitaの中の人 ◆KITAulkOso 04/11/22 03:30:36ID:BQLsuu/N
まだ起きてるのかよ<自分

>>575
> しばらくはサブジェクトビュー周りはいじる予定は無いのでこの辺りは任せます。
修正しました。
057742104/11/22 22:21:28ID:3vQSWaNY
パッチ。access.、kita_miscを若干変更。srcで-p0

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1122.txt

・Accessの方はm_orgDataを消してAccess::writeCacheData()で m_threadData
だけを追加保存するように変更。これによりメモリ消費量を減らして速度も向上。

まあ速いマシンではあまり変わらないと思いますが、ちょっと古くてHDDが遅いマシンなら
多少効果ありかと。

・kita_miscはHOST表示対応

削除依頼とかまちBBSとかHOST表示される板でHOST表示するようにしました。
Kita::parseDateId()とKita::parseTITLEdat()に数行追加しただけ。
でもホスト表示させると横幅が長すぎるかな・・・

あとは軽くテストしてqDebugを消したりとか。明日は休みなので、また
KNOPPINXを使って板の移転処理まわりの最終テストをする予定。
057842104/11/22 22:27:05ID:3vQSWaNY
やっぱりマークの動作が微妙に気になるので問題点と解決案をまとめてみました。
基本的に ViewPos <= ReadNum <= ResNum の関係が成り立ってるので取れる状態は

(0) ReadNum == 0, キャッシュ無し
(1) ViewPos <= ReadNum < ResNum、未読有り、新しい書き込み有り
(2) ViewPos < ReadNum = ResNum、未読有り、新しい書き込み無し
(3) ViewPos = ReadNum = ResNum、未読無し、新しい書き込み無し

の4つ。(0)はマーク無し(or New)、(1)を赤、(3)を緑にするのは問題ないけど、
(2)を赤、緑どっちに分類するかが問題。

(2)を緑の問題点: 未読があるのが分かりにくい
(2)を赤の問題点: スレを閉じない限り(緑にならないので)新しい書き込みがあっても分かりにくい

・解決案 1: マークを増やす。例えば

(1)赤○、(2)緑○、(3)緑□

みたいに。つまり新しい書き込み有り無しを色、未読有り無しを形で分別(逆でも可)。もしくは単に

(1)赤、(2)黄、(3)緑

みたいに色を変える。問題はユーザが新マークに馴れる必要があること。

・解決案 2: 内部パラメータを増やして従来通りの動作にする。

従来はDatInfo::m_kokoyonNumというパラメータを使って(2)をさらに

(2-1) ViewPos < ReadNum = ResNum、ロード直後でない
(2-2) ViewPos < ReadNum = ResNum、ロード直後

と分けて(1),(2-1)を赤、(2-2),(3)を緑にしてた。問題は内部コードがぐちゃぐちゃになること。
0579login:Penguin04/11/22 23:41:46ID:CFYXtOSd
kitaで既読情報やお気に入りなどを保存するタイミングってメインウィジェットの
終了時でしょうか? ウインドウを開いたままKDEを終了すると保存されていない
ようなのですが。
058042104/11/23 00:21:06ID:zOYbsGHe
いまboardmanager と kitaboardview のデバッグをしてますが、細かいバグが
結構残ってますね・・・

>>579
既読情報は0.172.0以前は終了時、最新版は>>556のタイミング

お気に入りは終了時 (KitaMainWindow::~KitaMainWindow()の saveFavoriteBoards()
と saveFavorites()のとこ )

です。
0581kitaの中の人 ◆KITAulkOso 04/11/23 01:05:18ID:9ejod1vc
>>578
(1)(2)を積極的に区別する必要性が分かりません。
少なくとも(2)(3)に比べたら区別する必要性は低いです。
なので、(1)赤○、(2)赤□、(3)緑□ なら反対しませんが。

あとむしろ問題なのは、スレを開いたときにスレ一覧(KitaSubjectView)の
色が更新されないことです。少なくとも赤のままはまずいです。
今まで通り緑にするか、新しく「開いているスレ=黄色」にするのがいいと思います。
種類を増やすのは危険ですが…。

>>579-580
今回断念したorzお気に入りの編集でまとめて直そうと思ってたのですが、
登録/削除のタイミングで保存するのなら簡単に出来ると思うので直しましょうか?
KitaMainWindow::bookmark()でsaveFavorites()を呼べばいいだけだと思うので。
058242104/11/23 03:11:32ID:zOYbsGHe
まだ起きてたりして。休みはありがたいなあw

>>581
> (1)(2)を積極的に区別する必要性が分かりません

区別しないことで生じる問題点は>>578の「(2)を赤の問題点」以下で述べて
ることで、要するに「少なくとも赤のままはまずい」ということです。で、

> (1)赤○、(2)赤□、(3)緑□

これが解決案1の「逆でも可」のところで

> 今まで通り緑にするか、

これが解決案2で

> 新しく「開いているスレ=黄色」

これが解決案1の「色で分ける」のとこですね。どの解決案を選ぶかは
一任しますが、個人的見解を言うとせっかくコードをきれいにしたので
解決案2は出来れば避けたいところ。
0583kitaの中の人 ◆KITAulkOso 04/11/23 11:59:39ID:9ejod1vc
>>582
> 区別しないことで生じる問題点は>>578の「(2)を赤の問題点」以下で述べて
> ることで、要するに「少なくとも赤のままはまずい」ということです。で、
何か話がかみ合ってないようですが、421さんは内部仕様の話をして、
自分は外部仕様の話をしてるような気が…。
外部仕様が決まらないと内部仕様の話はありえないです。

外部仕様としては、多くても以下の4種類しかありえないです。
(A) 未読スレ
(B) 既読スレ、未読あり
(C) 既読スレ、未読なし
(D) 開いているスレ

(D)は今の仕様にはないもので、(C)と区別される必要はないですが、
(B)とは区別される必要があります。これを満たさない内部仕様は不許可です。

で、どの案を採用するかですが…これはまた後で書きます。
0584kitaの中の人 ◆KITAulkOso 04/11/23 12:44:11ID:9ejod1vc
長くなったのでWikiに書きました。
http://kita.sourceforge.jp/cgi-bin/hiki/hiki.cgi?%A5%B9%A5%EC%A5%C3%A5%C9%B0%EC%CD%F7%A4%CE%A5%DE%A1%BC%A5%AF%A4%CE%BB%C5%CD%CD
058542104/11/23 13:24:48ID:qRM01ICu
いま起きました。休日最高w

>>583,584
Hiki見ましたが、パターン1が従来パターン(解決案2)ですね。

でパターン2なんですが、上の方で懸念していた問題点は、鯖側で新しい書き込みがあっても
パターン2では分からないこと・・・だったんですが、良く考えたらReadNumの数字をスレ一覧に
表示しとけば分かるのか。

と言う訳で「(D)状態のマークを新設してパターン2+ReadNumの数字をスレ一覧に表示」案に一票。
ちなみにJaneViewはそのパターンみたいです。
0586kitaの中の人 ◆KITAulkOso 04/11/23 13:47:40ID:9ejod1vc
>>585
> と言う訳で「(D)状態のマークを新設してパターン2+ReadNumの数字をスレ一覧に表示」案に一票。
パターン2はいいですが、>>547へループする危険性があるので注意してください。
未読のあるなしに比べたら数字の大小は大した問題ではないですが。
058742104/11/23 22:30:13ID:qRM01ICu
休みなんでつい遊んじゃったなあw

まあどっちにしろ(D)の状態を判定する関数が必要なので、DatManagerとKitaHTMLPartに数行加えて
スレが開いているかどうかをチェックする関数を追加しました。cvsからの差分でkitaで-po

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1123.txt

bool DatManager::isMainThreadOpened( const KURL& url );
bool DatManager::isMainThreadOpenedFast( const KURL& datURL );

使いかたは url を入れて開いてればTRUE閉じてればFALSE。下の方はKita::getDatURL()を使わないで
高速化したバージョンなので、KitaSubjectView::updateListViewItem()で使うときは
isMainThreadOpenedFast()の方が良いと思います。ただしURLとして datURLを入れてください。

その他追加した関数に関しては

KitaHTMLPart::setup()でDatManager::addMainThreadToList()を呼んでURLを登録
KitaHTMLPart::clearPart()でKita::DatManager::removeMainThreadFromList()を呼んでURL抹消

って感じ。
058842104/11/23 22:38:45ID:qRM01ICu
それと、とりあえずまたKNOPPIXを使って板移転まわりの最終テストもしました。もう少し
微調整して後でパッチ出します。boardmanagerとkitaboardviewあたりいじってます。
しかしKNOPPIXって開発環境があらかた揃っててCVS版でも余裕でmake出来るのでほんと
テスト用に最適ですなw テスト手順はこんな感じ

(1) KNOPPIXにkitaをインストール
(2) linux板を開いて適当なスレを開く。とりあえずこのスレ(1089905503.dat)とKNOPPIXのスレ(1094401227.dat)
(3) kitaを閉じる。
(4) pc.2ch.net から pc5.2ch.net に移転したという仮定の元でテストする。1094401227.dat を
擬似的に前々スレ( http://pc.2ch.net/test/read.cgi/linux/1022744633/ )とする。

cd /var/tmp/kdecache-knoppix/kita
mv pc5.2ch.net pc.2ch.net/
mv pc.2ch.net/linux/1094401227.dat pc.2ch.net/linux/1022744633.dat
mv pc.2ch.net/linux/1094401227.dat.idx pc.2ch.net/linux/1022744633.dat.idx
board_list を書き換えて pc5.2ch.net/linux から pc.2ch.net/linux に変更。

(5) kitaを再起動して linux 板を開いて開かないことを確認。
(6) 板一覧を更新
(7) Linux板をもう一度開いてキャッシュと既読情報が受け継がれてるか確認
(8) >>1の前々スレのリンクがポップアップするかチェック
(9) もう一度再起動して pc5.2ch.net/linux/BBSHISTORY がうまく読まれるかチェック
(10) BBSHISTORYとBBS_MOVEDの中身をチェック
058942104/11/23 23:46:48ID:qRM01ICu
てわけでBoardManagerの修正パッチ。cvsからの差分でkitaで-po。
変更対象は boardmanager.{h,cpp}とkitaboardview.cpp

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1123-2.txt

・外部板の登録の仕方を若干変更

KitaBoardView::loadExtBoard()のあたり。まあ、相変わらず暫定仕様な訳ですが。
oooug.jpみたいな Flash CGI/mini thread 型の板の場合はextbrd.confで

OpenOffice.org<>http://oooug.jp/cgi-bin/bbs/users/<;>3

みたいに最後に「<>3」を付けて下さい。するとこの板はFlash CGI/mini thread 型として登録されます。
その他の2ch互換板、したらばの場合は自動判定するので「<>数字」は必要ないです。ちなみにこの3って数字は
boardmanager.hの/* type of board */以下の数値だったりして。

・板リストの更新前に本当に更新するかメッセージボックスを出すようにした

KitaBoardView::downloadBoardList()のとこ。これで移転かなと思ったら気軽にメニューの板一覧更新で
移転があったか確認できます。あとついでに新板や移転した板の名前をクリップボードにコピーできるようにしたり。

ちなみに板移転ですが、従来どおりプリファレンスのデバッグのページで手動で移転することも可能ですが、
そっちでは板リストは更新されないのでなるべく手動で移転するのは避けてください(デバッグのページは
消しちゃった方が安全かも・・・)

・あとはこまかいバグの修正とかqDebug消したりとか。

明日はDatManagerのチェックをする予定。
0590login:Penguin04/11/24 01:35:52ID:NIUn7ONT
中の人&421氏、いつも開発乙です

1行AA、適当に拾って来て足しときますた。
気に入らないのは削ってください。

#RPMPOINTの人はPC復活したんだろうか…?
0591kitaの中の人 ◆KITAulkOso 04/11/24 02:10:02ID:HeQ5hYMF
パッチを全部マージしました。
あと>>574あたりから議論していた未読表示の対応を入れました。
とりあえず黄色にしましたがいまいちなのでたぶん変更しますw

ヘッダのOn/Offも入れましたがまだ微妙にバグが残ってます。
とりあえず明日snapshot出す予定なので、やばそうなら止めてくださいw

>>590
どもです。README.2chに入れました。
# hikiって履歴を辿っていけないのかなぁ。
059242104/11/24 22:13:14ID:Q57DaliP
いまDatManagerの最終チェックしてます・・・。終わるの0時頃かなあ。とりあえず
thread.{cpp,h}
datmanager.{cpp,h}
kitathreadview.cpp
kitahtmlpart.cpp
kita.cpp
を少しだけ修正してます。

ところでcvsですが、Qt3.1だと下のエラーが出ます。

kitasubjectview.cpp: In member function `virtual bool
KitaSubjectView::eventFilter(QObject*, QEvent*)':
kitasubjectview.cpp:498: error: `adjustColumn' undeclared (first use this
function)
kitasubjectview.cpp:498: error: (Each undeclared identifier is reported only
once for each function it appears in.)
kitasubjectview.cpp: In member function `void
KitaSubjectView::loadHeaderOnOff()':
kitasubjectview.cpp:537: error: `adjustColumn' undeclared (first use this
function)
059342104/11/24 23:39:48ID:Q57DaliP
まあテストして問題無いみたいなので修正パッチ。cvsからの差分でkitaで-p0。修正したソースは
thread.{cpp,h} datmanager.{cpp,h} kitathreadview.cpp kitahtmlpart.cpp kita.cpp

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1124.txt

・>>587のDatManager::isMainThreadOpened()の仕様を若干変更して効率化

パラメータ Thread::m_isOpened で判定するようにしたので、KitaSubjectViewの
Kita::DatManager::isMainThreadOpenedFast( datURL ) の部分は
thread->isOpened() に変更しておいて下さい。

ちなみに他のクラスから開いているかどうか知りたい時は DatManager::isMainThreadOpened()
のままでOK。

・KitaHTMLPart::setup()あたりを若干整理

ついでにコメント増やしたりとか。

・登録されてる板上のスレッドのURLかどうかをチェックする DatManager::isThreadEnrolled( url )
という関数を新設

で、KitaMainWindow::slotOpenURLRequestExt()でURLをスレッドタブを開くかどうかを
その関数で判定するようにした。

・終了時にDatInfoをdeleteするようにした

~KitaMainWindow()のKita::DatManager::deleteAllDatInfo()のとこ。
まあ何もしなくてもOSが開放してくれますが一応明示的に。

・あとは細かい修正とかqDebug消したりとか。

明日はKitaWriteViewあたりをチェックする予定。
0594kitaの中の人 ◆KITAulkOso 04/11/25 01:45:31ID:D9N/zWPi
snapshot
つhttp://kita.sourceforge.jp/snapshot/kita-20041125.tar.gz

あとはUIの整理と翻訳くらいの予定
0595rpmpoint04/11/25 23:06:41ID:9LzanXSc
>>590
すんません、時間がとれてなくてまだです
もうしわけありません
059642104/11/25 23:19:35ID:IULYOANR
KitaWriteViewまわりの修正パッチ。cvsからの差分でkitaで-p0。
対象は threadindex.{h,cpp} datmanager.{cpp,h} boardmanager.{cpp,h}
kitawriteview.cpp kitawritetabwidget.cpp
多分いま中の人がいじってる最中のあたりとはバッティングしてないはず。

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1125.txt

・ViewPos = 0 の時に、スレッドプロパティなどから直接 ThreadIndex::getViewPos() を呼ぶと
ViewPosの数字がidxとキャッシュでずれるバグ修正

ThreadIndex::getViewPosPrivate()のところ。ViewPos=0のときに無条件で"cache"の情報
を利用していたのを止めた。

・あとは細かいバグ修正とqDebug外したくらい。

明日は全体的な微調整とレビューをおこなう予定。というかレビュー要員募集中。
ここの動作が変だとか言ってくれないとそのままリリースされる可能性が大なので。
059742104/11/26 00:10:14ID:98xYxq86
ところでKDE3.3では直ってるかもしれませんが、kita最大かつ致命的なバグは

aaaa   aaa>>123

みたいに全角空白があって、その後にテキストノード、Aノードが続くと
Aノードの位置がずれることだと思います。それで、いま晩飯食いながら
なんとなくKDEのWebCVSでKHTMLのコードを眺めてた訳ですが、

とりあえず昔KDE3.1の時代に先頭の全角空白が詰まる問題のパッチでは
kdelibs/khtml/rendering/bidi.cppを直してたので、多分そこにまだ
問題が残ってるんだろうなと当たりを付けて眺めてみたら、
computeHorizontalPositionsForLine()というそれっぽい関数があって、
コメントとか見ながらその関数の中を眺めてたら
int x = leftOffset(m_height); という行と
int rightPos = lineBox->placeBoxesHorizontally(x); という
行があって、どうもノードの幅の計算をするときに、先頭の全角空白問題の時
みたいに全角空白を半角空白として認識して空白を詰めて計算してるため続く
Aノードの位置が左にずれてるらしい・・・という結論から言うと至極当り前な
推測に至ったのですが、良く考えるとKDEの開発MLにも参加してない自分が
バグの追求をしても仕方ないとふと我に帰ってやめましたw まあ30分位しか
調べてないので全然違う理由なのかもしれませんが・・・

と言う訳で、もしKDEの開発MLか何かに参加してる人がこれを読んでたら
開発者に直してと頼んでもらえるとありがたかったり。
0598kitaの中の人 ◆KITAulkOso 04/11/26 01:56:59ID:uJKFpkbe
snapshot
つhttp://kita.sourceforge.jp/snapshot/kita-20041126.tar.gz
全部パッチは入ってるはず。

あととりあえず翻訳終わりました。
今まで英語のままのところが多かったのは>>492のKitaThreadPart廃止による副作用でした。
あとプリファレンスから「デバッグ」を消しています。>>589
Qt 3.1の対応(>>592)も入れてますが面倒なので30pxに強制的に設定してますw
設定する機会も少ないと思うので影響は少ないと思いますが…。

直したいところは終わったので何事もなければリリースの準備にします。
0599login:Penguin04/11/26 18:56:12ID:6s/ZOlZl
>>598
乙彼です
板一覧の選択色がKDEのカラースキームの設定に関わらず群青色固定なのですが仕様でしょうか
あとkitaイメージビューワで表示したあとKonquerorに画像を渡すと文字で表示されてしまいます
(リロードすれば大丈夫)
060042104/11/26 23:15:51ID:akDpOYEt
なんかpc5に繋がらないので2重投稿になったらスマソ

>>599
最初の方はバグです。listviewitem.cppのpaintCellを次に修正してください。

void ListViewItem::paintCell( QPainter *p, const QColorGroup &cg,
int column, int width, int align )
{
QColorGroup color = cg;
color.setColor( QColorGroup::Text, m_textColor );
color.setColor( QColorGroup::Base, m_baseColor );
KListViewItem::paintCell( p, color, column, width, align );
}

2つ目は実は結構難しい問題で、そもそも何故テキストが表示されるかと言うとkitaimgtabwidget.cppの
480行目あたりの openURLRequestExt( view->url(), KParts::URLArgs(), "text/html" );
の部分でMIMEタイプを"text/html"と指定して画像ファイルをKonquerorに送ってるのを、Konquerorが
ファイルのヘッダも調べずにテキスト形式ファイルと決めつけてファイルを開いているからで、じゃあ
"image/png"みたいにMIMEタイプを指定して送ればよいじゃんと思うかもしれませんが、そうすると今度は
KonquerorじゃなくてKViewやkuickshowで画像を開いてしまうという問題が。

結局、取れる対策は2つ

1、コントロールセンターのファイルの関係付け経由でなくて自前で外部ブラウザを設定する。
2、MozillaかFireFoxを使う。
060142104/11/26 23:21:22ID:akDpOYEt
で、snapshotのレビュー。内部のことは全く考慮しないであくまで外部仕様だけ見てやりました。それと
お気に入りまわりは次バージョンで整備するということなのでレビュー対象から除外しました。
テスト環境: KNOPPIX3.6、Qt3.2.3、KDE3.2.3、mona フォント
・そもそもユーザーマニュアルがないので詳しい使用方法が分からない
・プリファレンスの左側のツリービューの項目の文字が全部表示されない、枠を広げることができない
・板別に串の設定ができない
・キャッシュディレクトリが固定で任意の場所を指定出来ない
・板一覧やスレ一覧の背景色を設定できない
・キーボードショートカットのキー割り当てが適当
・いちいちコントロールセンターでマウスジェスチャーの設定をする必要がある
・他のブラウザからのログ移行が難しい
・外部板の登録の方法が良く分からない
・外部板の並び替え、カテゴリ別分類ができない
・板名検索機能が無い
・スレ一覧の更新のときにいちいちダウンロードダイアログが出るのがうざい
・スレ一覧の各行の幅が保存されないで勝手に調整される
・スレ一覧のIDの順序の行が消せない
・スレ一覧のViewPos、板の行に何も表示されない
・スレを開いていると更新があってもスレ一覧のマークが変わらないため更新があったことが分かりにくい
・スレ一覧でまとめてスレ削除ができない
・スレ別でのコテハン記憶、あぼーん機能が無い
・スレビューで全角空白があるとリンクの位置が左にずれる
・スレビューの検索単語をハイライトのボタンを押しても何も起きない
・スレビューでマークしたスレの番号が保存されない
・スレビューでレス抽出の仕方がいまいち分かりにくい
・スレビューでメアド欄非表示設定だと名前が数字でもレスポップアップしない
・スレビューのフォントサイズを変更するときにいちいちプリファレンスを開くのが面倒
・メインスレッドウィンドウとKitaNaviの見分けが付きにくい
・まちBBSに書き込み出来ない
・画像ビュワーの右クリックメニューのサイズのところで現在の画像サイズが分からない
・画像のプロパティみたいなものが無いためファイルサイズやフォーマットが分からない
・画像あぼーんが無い
0602kitaの中の人 ◆KITAulkOso 04/11/27 01:13:29ID:VYdYsESQ
>>600
commitしました。

>>601
> ・スレ一覧のViewPos、板の行に何も表示されない
subjectviewの設定を保存するようにしたため、将来使いそうなのをあらかじめ入れたためです。
(「板」はFavoriteListViewのため)

> ・スレを開いていると更新があってもスレ一覧のマークが変わらないため更新があったことが分かりにくい
これはまずいですね…さすがに29日には間に合わないけど、
また仕様から考え直す必要がありますね。
060342104/11/27 02:18:55ID:bkTkhvpQ
> また仕様から考え直す必要がありますね。
実は割合簡単な話で、hikiの書き方に合わせれば

5. スレを開いた状態でスレが更新されたなら

(D) => (B)

とするだけですね。具体的にはkitasubjectview.cppの

// no effect: m_unreadNum, m_readNum, m_newNum, markOrder
if ( thread->isOpened() ) { /* opened *

を

// no effect: m_unreadNum, m_readNum, m_newNum, markOrder
if ( thread->isOpened() && resNum == readNum ) { /* opened */

にするだけでok。 あと個人的には次バージョンでは

> ・キーボードショートカットのキー割り当てが適当
> ・いちいちコントロールセンターでマウスジェスチャーの設定をする必要がある
> ・他のブラウザからのログ移行が難しい
> ・スレビューでマークしたスレの番号が保存されない
> ・メインスレッドウィンドウとKitaNaviの見分けが付きにくい
> ・まちBBSに書き込み出来ない

あたりをなんとかしようと考え中。
0604kitaの中の人 ◆KITAulkOso 04/11/28 01:56:36ID:uKBX3WgK
>>603
個人的にはマークの意味が曖昧になるのが気になりますが、
現状よりはよいということでcommitしますた。

寝て起きて覚えてたら最後のsnapshot出します。
060542104/11/28 02:44:08ID:oNq/H9eY
ちょっとだけデバッグ。

・書き込みの時に現在のバイト数の計算が間違ってたバグ修正

diff part-org/kitawriteview.cpp part/kitawriteview.cpp
434c434
< int length = m_cp932Codec->fromUnicode( bodyText->text(), tmpln ).length();
---
> int length = m_cp932Codec->fromUnicode( bodyText->text().replace( "\n", " <br> " ), tmpln ).length();

バイト計算をするときは改行をbrタグにしてから計算しないと駄目みたいです。となると特殊文字なども
変換してから計算しなきゃいけないのか・・・。まあこの辺は次バージョンでもう少し調べてみます。

・あとqDebugの消し忘れ

diff libkita-org/favoritethreads.cpp libkita/favoritethreads.cpp
67d66
< qDebug("readFromXML");
0606login:Penguin04/11/28 09:17:37ID:S1pxb2sA
snapshot使ってみましたので、気づいた点を幾つか。
[環境] SUSE 9.1 Qt 3.3.3 KDE 3.3.3 kita-20041126

★スレを開いても閉じるかそのタブに別のスレを開かない限り未読数が消えない
 #以前は開くと同時に未読の欄が消えていた。こっちの方が分かり易い
★上記に関連して、スレ一覧の「更新」ボタンの横の「未読スレ数」(赤字)表示も、
 閉じるかそのタブに別スレを開くまで変わらない
★スレビューを更新しようとしたが「更新中」のまま反応がない時、メニューの「停止」を選択しても、
 escapeを押しても変化がない。スレビューをクリックすると消える(ただし再現させるのが難しいので、
 常にそうなるかどうかは不明)
★スレビューで検索し、一つもhitするものがなかった場合、「見つかりませんでした」というメッセージがほしい
 今は何故か120から130番レス辺りに黙って飛んでしまうので、一瞬hitしたのかと思ってしまう
★あと、メール欄非表示の設定の時、ミョーな現象ハッケソ。>>606←これのPopupの名前欄

それと、イメージビューアに初めモザイクが掛かってるのはどういう理由からなんでしょうか?
見なきゃどんな画像か分からないからどの道外すことになるので意味ないような…
0607login:Penguin04/11/28 09:29:20ID:S1pxb2sA
あ、あとスレビューでレス番号を右クリックしても何も起こらなくなってるような…
ってか、前は何でしたっけ?レス間の関係図みたいな奴でしたっけ?
0608login:Penguin04/11/28 09:49:34ID:S1pxb2sA
何度もスミマセン。
>>607は見なかったことに…

#機能を理解してなかっただけだったので…(TДT)
#ちゃんと機能してましたです
060942104/11/28 13:06:50ID:2307/MxE
>>606
> ★スレを開いても閉じるかそのタブに別のスレを開かない限り未読数が消えない
> ★上記に関連して、スレ一覧の「更新」ボタンの横の「未読スレ数」(赤字)表示も、
> 閉じるかそのタブに別スレを開くまで変わらない

このスレの上の方で話が出てますが、今までは内部では「(鯖側の)レス数」、「ここまで読んだの位置」
の2つのパラメータを持っていたのをほにゃららして、「未読数」の列をスレを開いた直後は「新着数」として
扱って0にセットし、ここまで読んだを移動したら「未読数」として扱ってましたが、今回からは内部では
「(鯖側の)レス数」、「(キャッシュにある)取得レス数」、「ここまで読んだの位置」の3つのパラメータを
持つようになったので、「未読数」の列には厳密に「レス数 - ここまで読んだの位置」の数字が入るように
なりました。従って以前みたいに「新着数」を知りたいときは「新着数」という列を新設する必要があります。

まあスレ一覧の列のOn/Offが出来るようになったし、「新着数」と「取得レス数」の列を入れるとしたら
次バージョンでですかね。

> ★スレビューを更新しようとしたが「更新中」のまま反応がない時、メニューの「停止」を選択しても、
> escapeを押しても変化がない。

こっちでは確認出来てないので、ぼちぼち見ときます。

> ★スレビューで検索し、一つもhitするものがなかった場合、「見つかりませんでした」というメッセージがほしい
> 今は何故か120から130番レス辺りに黙って飛んでしまうので、一瞬hitしたのかと思ってしまう

このバグは認識してましたが、突っ込みが入るまで放置してましたw 次バージョンで直します。

つづく
061042104/11/28 13:11:18ID:2307/MxE
つづき

> ★あと、メール欄非表示の設定の時、ミョーな現象ハッケソ。>>606←これのPopupの名前欄

これはバグですね。次みたいに修正しておいて下さい。

diff kita_misc.cpp.org kita_misc.cpp
841,842c841,842
< titletext += "<a href=\"" + linkurl;
< titletext += " title=\"" + addstr + "\">";
---
> titletext += "<a href=\"" + linkurl.replace( ">", "&lt;" );
> titletext += " title=\"" + addstr.replace( ">", "&lt;" ) + "\">";

> それと、イメージビューアに初めモザイクが掛かってるのはどういう理由からなんでしょうか?

グロ画像対策です。モザイクをoffにしたいときは .kde/share/config/kitarcで
「UseMosaic=false」として下さい。

> あとスレビューでレス番号を右クリックしても何も起こらなくなってる

参照がないときでも何か反応させた方が良いのかも・・・

ところで全体の設定ファイルが.kde/share/apps/kitaではなくて.kde/share/config
にあるのはKDEのアプリとしては正しいんですが、OS再インストールの時とかバックアップする
ときにバックアップし忘れそうな気がしますねえ、と今日の夜FC3をインストールするつもりで
いまバックアップしてる最中なのでそうオモタ。
0611kitaの中の人 ◆KITAulkOso 04/11/28 14:12:40ID:uKBX3WgK
CVSに
・文字列を選択すると標準出力に"XXX heuristicNameMatch hint = utf-8"が出続ける
という問題をfixしました。単にwarning削っただけですが…。
本来はQCp932Codec::heuristicContentMatch()を実装しないとダメですけどね…。

>>605
commitしますた。
> バイト計算をするときは改行をbrタグにしてから計算しないと駄目みたいです。となると特殊文字なども
> 変換してから計算しなきゃいけないのか・・・。まあこの辺は次バージョンでもう少し調べてみます。
たぶんdatファイルに格納するときのバイト数なので、
リンクについても同様に変換してから計算しないとまずいですね。
で、2chだとリンクするけど、まちBBSだとリンクしないということは…((((;゚Д゚)))ガクガクブルブル

>>606>>607>>609>>610
> 取得レス数
これは今の「既読」に相当しますよね。というかこれは「取得」のミスorz
あと、On/Offは出来るようになりましたが、あまり列を増やすと混乱するので別の方法を
使うことを検討したいです。数字の色を変えるとか。

> モザイク
On/Offの具体的な要望がなかったような気がするので今までUI付けてなかったり。
というわけで次(12/29?)に入れます。たぶん。

> メール欄のバグ
commitしますた。

> 参照がないときでも何か反応させた方が良いのかも・・・
に一票。

> 設定ファイル
これってKDEの設計の問題だよなぁと。configは廃止してもいい気が。
0612login:Penguin04/11/28 15:11:33ID:IzXu5vFB
中の人、421さん乙カレー
ところで前にスレ一覧のNo.とかTitleとかの欄の幅を変えられるようにしてホスィ
ってお願いしていて、最近のスナップショットで叶えられたと喜んでいたのですが、
せっせと設定したベストポジションが一度kitaを終了してしまうとリセットされてし
まってショボーンです。
kita終了しても欄幅覚えて再現してくれるようにキボンヌ。
0613kitaの中の人 ◆KITAulkOso 04/11/28 16:26:54ID:uKBX3WgK
snapshot
つhttp://kita.sourceforge.jp/snapshot/kita-20041128.tar.gz

>>612
ごめんなさい。入れたつもりだったのですがバグっててうまくいかないようですorz
すぐには直せそうにないので次でお願いします。
061461204/11/28 16:48:08ID:zoCIwKSf
>>613
( ゚д゚)ノ ハーイ 了解っす
0615kitaの中の人 ◆KITAulkOso 04/11/28 17:09:57ID:uKBX3WgK
レス番号をクリックしたときの「URLをコピー」「タイトルとURLをコピー」
「コピー」で得られるURLが間違ってるバグの修正。
まちBBSは直ってませんが、一行だと直らないっぽいので次に回します。

Index: kita/src/part/kitahtmlpart.cpp
===================================================================
RCS file: /cvsroot/kita/kita/kita/src/part/kitahtmlpart.cpp,v
retrieving revision 1.68
diff -u -r1.68 kitahtmlpart.cpp
--- kita/src/part/kitahtmlpart.cpp 25 Nov 2004 16:05:02 -0000 1.68
+++ kita/src/part/kitahtmlpart.cpp 28 Nov 2004 07:57:47 -0000
@@ -1566,7 +1566,7 @@

/* url */
if ( str != QString::null ) str += "\n";
- str += Kita::DatManager::threadURL( m_datURL ) + QString().setNum( resNum ) + "\n";
+ str += Kita::DatManager::threadURL( m_datURL ) + "/" + QString().setNum( resNum ) + "\n";

/* body */
if ( ret == WRITEMENU_COPY ) {
0616kitaの中の人 ◆KITAulkOso 04/11/28 17:33:45ID:uKBX3WgK
>404以降のログを確認して、0.173.0で入る主な変更点をまとめました。
(バグは除いてます)

>409>467>476>589
・鯖移転対応

>422>425
・環境変数KDEDIRSが設定されていないときも正しく動く
# ただし英語のままなのでKDEDIRSの設定自体は必要

>435>451
・したらば読み/書き/スレ立て対応

>446
・キャッシュに残ってるdat落ちしたログの表示(スレ一覧の右クリック)

>492
・書き込みウィンドウで行数、バイト数の表示
# これ分かりにくいので説明が必要ですね。
・板看板表示(スレ一覧タブの右クリック)

>530>532
・2ch以外のBBSの逐次表示
・Flash CGI/Mini Thread読み込み/書き込み/スレ立て対応

>577
・HOST表示対応

>591
・未読表示方法を変更
・スレ一覧の項目のOn/Off
0617login:Penguin04/11/28 20:43:19ID:S1pxb2sA
>>609
> このスレの上の方で話が出てますが、
スマソ。純粋に、お二人の会話についていけてませんでした orz

> ★スレビューを更新しようとしたが「更新中」のまま反応がない時、メニューの「停止」を選択しても
この件に関してですが、どうもVer. upしたときに、cacheにログがあるのに読み込めていない(スレ一覧の
「既読数」が空欄になってる)スレで発生するようです。ので、問題としては「停止やescapeが効かない」
というよりは、「Ver. up時にログを読み込めないスレがある」というものかと。
詳しく書くと、
 1.) Ver. up後スレ一覧を開くとログがあるはずなのに既読数が空欄のスレがある
 2.) そのスレを開こうとすると、statusbarに「更新中」とでたまま変わらない(「停止」やescapeを押しても変化なし)
 3.) スレビュー(真っ白)を左クリックすると「更新中」の表示は消える
 4.) スレビューを右クリックするとkitaがクラッシュする

こんな感じです。

> 「UseMosaic=false」として下さい。
早速。

>>611
>> モザイク
>というわけで次(12/29?)に入れます。たぶん。
お願いしまつ
061842104/11/28 22:19:52ID:2307/MxE
>>617
そのバグ再現しました。例えば、kitaを閉じてから

rm 1089905503.dat (このスレのキャッシュ)

したあとkitaを起動してこのスレを開くとその症状がでます。ちなみに直すときは
スレ一覧でログを削除してからもう一回クリック。

で、これはキャッシュファイルが無いのにidxがあるとデータベースに不整合が起きて
生じるバグみたいで、多分DatManagerとBoardManagerを数行直せば直ると思うんで
すが、いかんせん現在OSを再インストール中でしょぼいサブノートから書いてる状況
なので、あと2,3時間ほど待ってください。
0619login:Penguin04/11/28 22:58:09ID:S1pxb2sA
>>618
あ、いやいや、こっちでもログ消して再取得で復旧済ですので、
急がなくて大丈夫です。
ありがとです
062042104/11/28 23:57:32ID:2307/MxE
まだFC3の設定が終わってないのでサブノートから。

もうひとつ、「お気に入りスレに登録されてる」って条件が必要ですね。つまり、
FavoriteThreads::processThreadNode()のThreadIndex::loadIndex()で
キャッシュがあろうが無かろうがidxを読み込んでしまうためデータベースが壊れて、
キャッシュが無いのにReadNum > 0 になるため、KitaHTMLPart::setup()の

if( Kita::DatManager::getReadNum( m_datURL ) == 0 ) Kita::DatManager::createDatInfo( m_datURL );

のところでDatInfoを作らずにそのまま突き進んで、結局右クリックすると
KitaHTMLPart::showPopupMenu()の datInfo = Kita::DatManager::getDatInfoPointer()で
NULLが返って datInfo->getReadNum()でぬるぽで落ちるという感じ。

で、とりあえずこんな感じで回避。

diff kitahtmlpart.cpp.org kitahtmlpart.cpp
130c130
< if( Kita::DatManager::getReadNum( m_datURL ) == 0 ) Kita::DatManager::createDatInfo( m_datURL );
---
> Kita::DatManager::createDatInfo( m_datURL );

KitaHTMLPart::setup()でReadNum==0のチェックを外しただけ。するとDatInfoが
作られたときにDatInfo::initPrivate()の中でm_thread->setReadNum( 0 );
としてるのでレス数がリセットされます。DatManager::getDatInfo()を見れば
分かるように、別にReadNum==0のチェックを外しても害は無いです。というか、
むしろチェックすると上みたいな害がある訳ですがw

整合性が壊れる問題の根本的な解決は次バージョンでやります。
0621kitaの中の人 ◆KITAulkOso 04/11/29 00:29:46ID:xEs1DOao
>>620
落ちなくなったことガッ確認できたのでcommitしました。

直接は関係ない話ですが、
.datがなくて.dat.idxがある状態って普通はないと思ってたんですが、
>>556にあるように
> a) キャッシュにあるスレを表示した直後(鯖からデータをロードする前)に
> DatInfo::initPrivate() からThreadIndex::saveIndex()を呼ぶ。
なので鯖が反応なくてロードを停止した場合に起き得るみたいですね。
0622kitaの中の人 ◆KITAulkOso 04/11/29 22:06:23ID:OfktG3qJ
Kita Version 0.173.0をリリースしました。

変更点(ほとんど421さん)
* 各種板対応
o 2chのサーバ移転に対応
o したらばの読み/書き/スレ立て対応
o Flash CGI/Mini Threadの読み/ 書き/スレ立て対応
* スレ一覧表示関連
o 未読数表示方法を変更
o 項目のOn/Off(ヘッダーで右クリック)
o 板看板の表示(タブで右クリック)
o キャッシュに残ったdat落ちしたログの表示(タブで右クリック)
* スレ表示/書き込み関連
o HOST表示対応(削除依頼、まちBBSなど)
o 2ch以外のスレの逐次表示
o 書き込みウィンドウで行数/バイト数を表示(右下に 「(現在の行数)/(最大行数) | (現在のバイト数)/(最大バイト数)」で表示されます。)
* その他UIの調整、バグ修正

今回は修正点が多いので、各種設定ファイルのバックアップを特におすすめします。
(.kde/share/config/kitarc, .kde/share/apps/kita/* 以下が設定ファイル、
.kde/share/cache/kita 以下がキャッシュ)
多分大丈夫だとは思いますが。
0623kitaの中の人 ◆KITAulkOso 04/11/29 22:12:28ID:OfktG3qJ
age

とりあえず次こそお気に入りの整理を入れる予定ですが、
仕事が忙しかったり何やら誘惑の多い時期なのでダメだったらごめんなさいと先に謝っておきます。
(#゚Д゚) ゴルァいわれない程度には頑張りますが。
0624login:Penguin04/11/29 22:46:34ID:wxdUEsm/
gcc-2.95でのコンパイルエラーを回避するためのパッチを貼らせてもらいますよ…

--- kita/src/part/kitawriteview.cpp.origSun Nov 28 13:22:18 2004
+++ kita/src/part/kitawriteview.cppMon Nov 29 22:38:31 2004
@@ -436,8 +436,8 @@
int maxLength = Kita::BoardManager::getBBSMsgCount( m_datURL );

QString str;
- str = QString().setNum( lines ) + "/" + ( maxLines != 0 ? QString().setNum( maxLines ) : "--" );
- str += " | " + QString().setNum( length ) + "/" + ( maxLength != 0 ? QString().setNum( maxLength ) : "--" );
+ str = QString().setNum( lines ) + "/" + ( maxLines != 0 ? QString().setNum( maxLines ) : QString( "--" ) );
+ str += " | " + QString().setNum( length ) + "/" + ( maxLength != 0 ? QString().setNum( maxLength ) : QString( "--" ) );
lengthLabel->setText( str );

if( maxLines != 0 && lines > maxLines ) return FALSE;
0625login:Penguin04/11/29 23:42:34ID:Iq38my1R
なぜか?
ダウンロードできない。
シクシク
062662504/11/30 00:54:11ID:wn41vUAv
サーバーが吐き出すMIMEタイプがおかしくないですかね?
audio/x-pn-realaudio-pluginと判断されてダウンロードできない。
Linux版のFirefox1.0とOpera7.6P3で試しました。

他の人は無問題?
0627login:Penguin04/11/30 01:11:19ID:mDUrXQW0
うちだとFirefoxでダウンロード先にosdnを選択した状態では問題ないな。
0628kitaの中の人 ◆KITAulkOso 04/11/30 01:20:56ID:VERsZy1V
うちだとmozillaでOSDNで起きる…しかも古いバージョンでも。
他のところだと起きてない。何でだろう。
とりあえずこっちからダウンロードしてください。md5sum確認は忘れずに。
http://keihanna.dl.sourceforge.jp/kita/12389/
http://kyushu-u.dl.sourceforge.jp/kita/12389/
062962504/11/30 01:53:21ID:wn41vUAv
>>628
無事にダウンロードできました。
どちらからでもOKでした。
ありがとうございます。

>>627
レスありがとうございます。
063069104/11/30 02:10:55ID:drmpea6j
kita 0.173.0 Debianパッケージうpしました

>>622
細かいけど
× .kde/share/cache/kita 以下がキャッシュ
○ $HOME/.kde/cache-<username>/kita 以下がキャッシュ
063169104/11/30 02:13:20ID:drmpea6j
自己レス
> × .kde/share/cache/kita 以下がキャッシュ
> ○ $HOME/.kde/cache-<username>/kita 以下がキャッシュ

KDE 3.1.xでは合ってるんだった オモイダシタヨ _| ̄|○
下は3.2以降の話だ
0632login:Penguin04/11/30 02:19:16ID:p7K1faMQ
0.173.0かなり快適っす。中の人乙です。
シェードでフォームサイズがかわるのがなくなったので使いやすいです。
が、機能が増えてきてそろそろ全部の機能を把握できなくなってきますた。
0633login:Penguin04/11/30 12:35:01ID:JoaOPgCz
>>691@Okada氏
Thx.
0.173.0用、ありがたく使わせていただきますた。

#kita_0.173.0-1.dscで、kita_0.173.0.orig.tar.gzとしているのは
kita-0.173.0.orig.tar.gzに直したほうがWebの説明とマッチするのでは。。
063469104/11/30 14:12:59ID:drmpea6j
>>633
> #kita_0.173.0-1.dscで、kita_0.173.0.orig.tar.gzとしているのは
> kita-0.173.0.orig.tar.gzに直したほうがWebの説明とマッチするのでは。。

ありゃ?ホントだ気づかんかった orz
× kita-0.173.0.orig.tar.gz
○ kita_0.173.0.orig.tar.gz
説明の方が間違ってます... _| ̄|○
直しときます
0635login:Penguin04/11/30 22:13:19ID:RtS7XEhm
リリース乙です

#どうでもいいことですが、>>606は「KDE 3.3.3」→「KDE 3.3.1」ですた orz
063642104/12/01 00:06:53ID:a4/6ZSRm
いきなりですがパッチ。cvsからの差分でkitaで-p0。

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1130.txt

対象:
threadindex.{h,cpp} boardmanager.cpp datinfo.{cpp,h} kita_misc.cpp kitaconfig.{cpp,h} access.cpp
kitawriteview.cpp kitathreadview.cpp kitahtmlpart.cpp

主な内容は前バージョンでやりのこした問題の修正と高速化。

・スレ情報データベースの不整合の問題対応

そもそも根本的な問題としてdatがないのにidxを読むのが悪いので、ThreadIndex::loadIndex()の
引数にbool checkCachedというパラメータを増やしてcheckCached = TRUEのときにキャッシュが
無かったらidxをロードしないようにしました。

ちなみにBoardManager::readSubjectTxt()とかBoardManager::getCachedThreadList()で
ThreadIndex::loadIndex()を呼ぶときは既にキャッシュがあるかないかQDir::entryList()を使って
チェックしてるので checkCached = FALSE にしてます。

あとは何らかの影響でThreadクラスの情報が壊れても、スレを開くときにDatManager::enrollDatInfo()で
new DatInfo すると、DatInfo::initPrivate()でm_access->getcache()が呼ばれることによって
データベースとidxを作り直すので問題ないと思いますが、>>621の問題に対応するため
ThreadIndex::saveIndex()でReadNum == 0 だったらidxをdeleteするようにしました。

・>>611の、リンクについても同様に変換してから計算しないとまずいですねの問題

あまり厳密にやると速度が低下するので改行と>と<の時だけ計算することにしました。
KitaWriteView::slotBodyTextChanged()のところ。まあバイト数は目安ってことであまり
大きい数字にならないでねってことで。

つづく
063742104/12/01 00:10:15ID:a4/6ZSRm
つづき

・パース回りのコードを簡略、高速化

struct RESDATを簡略化して、DatInfo::setAncList()も廃止して、Kita::parseResDat()の中で
生データを各セクションに分けるのと同時にアンカーリストを作成するように変更。
あとKita::parseDateId()で糞重いQRegExpを使うのをやめて高速化。
それとAccess::getcache()で2chの場合はemitDatLineList()を経由しないようにしてちょっと高速化。

・連鎖あぼーんをデフォルトoffに

今まではデフォルトOnでしたがやっぱ遅いので。bool KitaConfig::m_aboneChain という
パラメータを新設してそれで On/Off 切替え。kitarcで言えば
[Global]
AboneChain=false
のところ。

・>>606の検索の「見つかりません」メッセージ対応

KitaThreadView::slotSearchPrivate()のところ。

・>>610の参照がないときでも何か反応させた方が良いのかもの対応

KitaHTMLPart::slotOnURL()の/* id popup */ とか/* show reffered num */ のあたり

これで前バージョンでやりのこした事は大体潰したかな。で、とりあえず短期的な予定としては、
前バージョンで混入したバグを潰しつつBoardManagerとThreadクラスの再整理と、今度こそ
KitaThreadViewの整理をする予定。それが終わったら>>603で挙げた項目を消化するつもり。
もっとも、内部的にいじる所はあまり残ってないので、前バージョンに比べればパッチ量は
減ると思います。

それと>>597の問題はKDE3.3で直ってました。さすがにこんなでかいバグをいつまでもほっとかないかw
0638kitaの中の人 ◆KITAulkOso 04/12/01 19:43:51ID:GuUAFL4x
>>636-637
commitしました。一点だけ。

> あとKita::parseDateId()で糞重いQRegExpを使うのをやめて高速化。
これってQRegExpを再利用することでほぼ解決できませんかね?
メンテナンスに問題があるのでコード量が増えるのは避けたいので。
暇があったら自分で測定してみますが。
0639kitaの中の人 ◆KITAulkOso 04/12/01 20:35:19ID:GuUAFL4x
>>638
を試しにテストしてみたんですが、全然効果ありませんでしたorz
正規表現の最適化も効きそうにないしあきらめるかぁ…
064042104/12/02 00:25:21ID:Fn9Hkyyn
また高速化熱が再燃してる訳ですがw

こちらでも測定しながら作業してますがQRegExpの遅さは洒落になってないです。いやマジでw
まあQRegExpを使わない代わりに、いまkita_miscのパース関係のコードをガリガリ削りまく
って高速化しているところなのでそれでコード量を相殺するってことで勘弁してください。

ちなみにどんなテストをして測定してるかというと、速いマシンだと違いが分からないので、
CPU: MMX333, Qt: 3.1.2, KDE: 3.1.4 というしょぼいマシンで

cp 123456.dat hoge.dat
cat hoge.dat >> 123456.dat
cat hoge.dat >> 123456.dat
・・・

みたいな感じで擬似的に3000レス、500kのdatファイルを作成して、全レス表示されるまでの
時間を計測しています。結果はこんな感じ。

ノーマル0.173.0・・・平均 15秒
>>636当てたやつ・・・平均 12秒
作業中のやつ ・・・平均 10秒

目標は0.173.0の半分なのですがそろそろきつくなって来たかも・・・
0641login:Penguin04/12/02 13:12:24ID:9m0ABKma
作者さんへ

kitaを愛用させて頂いてます。
ありがとうございます。

要望

ttp://hoge.hoge/

等のリンクをクリックした時の動作を、

現状: 「ウェブブラウザで開く」
変更: 「リンクの場所をコピー」との選択性

にして欲しいです。

理由: kde の場合、klipperを起動させておくと、クリップボードへコピーすることで、ブラウザを選んだり細かい設定ができる。

linux の場合、どうしてもデフォルトブラウザでは巧く表示できなかったりして、複数のブラウザを切替える必要があるので、いつも右クリックから使っていますが、めんどいです。

よろしくおねがいします。
0642kitaの中の人 ◆KITAulkOso 04/12/03 20:51:59ID:eHyg4RmX
>>641
> 変更: 「リンクの場所をコピー」との選択性

1-clickでクリックボードへURLをコピーできるようにするということですよね?
ちょっとそのままの形で導入は難しいです。理由は、

・"minor"な設定のためにプリファレンスの項目が増える(とりあえず他のアプリで同様な設定は見たことない)
・1-clickでコピーされるので操作ミスが怖い(klipperを起動している環境だといいですが)

代わりのUIを考えてたのですがちょっといいのが思いつかなかったので逆質問。
> ブラウザを選んだり細かい設定ができる。
の「細かい設定」は具体的にどんな作業で、頻度はどれくらいだと思います?

ブラウザ選択以外の作業がほとんどないなら、ブラウザ選択のUIをつけることを考えてます。
クリックした時のブラウザが2つから選べるのは割とよくあると思うので。


あと今思いついたのは、FireFoxのようにクリックしたときにダイアログが出て、
そこでURLを渡すアプリを選べるようにするとか。
とりあえず思いついたのはこれくらい。

(641さんに限らず)何かよさそうな案があったら書いてください。
0643login:Penguin04/12/03 21:52:55ID:Kh8u1cQi
kitaの中の人,421さん,RPMPointさん、そして協力者の皆様 乙です。

ところで最近、キテガイが張り付けた画像を何回も踏んでしまって頭を抱えています。
Linuxデスクトップ画像のスレにもありました。

個人的な要望で流れを止めてスマソですが、
>>601 の最後に書かれている。
画像あぼーん機能 "優先" キボンヌです。
064442104/12/04 00:06:13ID:QtPpS60z
>>643
> 画像あぼーん機能

モザイク機能があるので画像あぼーんの優先度は割と低めです。というのは
口実で、他に片付けなきゃいけない事が山積みなので、特に問題の無い画像
関係には単に時間を割けないってだけなんですが・・・

という訳で画像関係のメンテナ募集中w
関数とか変数の意味が分からないとかいった質問があったら教えますんで。

それとレンダリング高速化計画ですが、なんとか0.173.0の2倍(状況によっては
3,4倍)までは速く出来ました。まあ結局レンダリングまわりをほとんど書き直す
羽目になった訳ですがorz 完成は明日の夜あたりかな。

それでも(一方的にw)ライバル視してるOpenJaneと比べると同スペックのPCで
4倍位遅いんだよなあ・・・。ほんと、化け物ですかw>OpenJane
0645641ではないですが04/12/04 00:21:18ID:lFcZHSka
>>642
個人的には
・"アプリケーションで開く"
・"名前を付けて保存"
が欲しいです。(゚ ゚)
0646login:Penguin04/12/04 00:46:54ID:Y5bXkGLi
>>644 乙です。
私に出来るかどうかはわかりませんが。
マターリと画像関係の調査からやってみます。
0647login:Penguin04/12/04 00:59:27ID:Y5bXkGLi
メニューに『モザイクを付け直す』を追加するか『モザイク』をトグルしたらまずいかな . . .
0648login:Penguin04/12/04 03:05:48ID:yS3e6jTa
あぼーんとかモザイクじゃなくて、素早くミドルクリックで消すのがいいな。
064964104/12/04 09:00:20ID:4KUf6oSh
>>642
641です。遅くなりました。

> 1-clickでクリックボードへURLをコピーできるようにするということですよね?

そうです。

> > ブラウザを選んだり細かい設定ができる。
> の「細かい設定」は具体的にどんな作業で、頻度はどれくらいだと思います?

具体的には、

* ブラウザの選択
* クリックしたURLをタブで開く

です。

klipperの 「設定」->「動作」->「^https?://.」 の中のmozilla用コマンド(確かdefaultで設定済)を見て頂くとわかりますが、

pgrep firefox && firefox -remote 'openURL(%s,new-tab)' || firefox %s (%sは、URLに置換)

のようになっていて、該当ブラウザが既に起動している時は、タブで開く設定になっています。

これによって、クリック毎に新規windowが開かなくするといった使い方をしますので、
頻度の答えとしては、「URLをクリックする度」となります。
065042104/12/04 23:21:50ID:rHUEAtjX
スレ表示高速化パッチ。cvsからの差分でkitaで-p0。変更部分は
datinfo.{h,cpp} kita_misc.{h,cpp} parsemisc.h datmanager.{h,cpp} kitaconfig.cpp
kitawriteview.cpp kitahtmlpart.cpp kitadomtree.{h,cpp}

ttp://www.geocities.co.jp/SiliconValley-Bay/7435/patch-1204.txt

(おおまかな説明) 一番大きな変更点はパースエンジンを書き直してDOM系のクラスを除いたこと。
いままではHTMLDocument::createElement()を使ってノードを作ってましたが、KHTMLが最適化
されたKDE3.2以降はHTMLを丸投げしてKHTMLにレンダリングしてもらった方が速いことが分かったので、
DatInfo以下のクラスではHTMLテキストだけを扱うことにして、HTMLElement::setInnerHTML()を
使ってレンダリングすることにしました。( KitaDomTree::createResElement() のところ)。
これによってパース関係の関数が見やすくなりました。またハース関係の関数を一ヶ所
(kita_miscの700行以下あたり)にまとめて、パースの流れが分かり易くなるように整理しました。
その他、必要ないコードを削除したりメモリ消費量を減らしたり等。

(もうちょっと詳しい説明) 心臓となる関数はKita::parseResDat()で、 datinfo.hで定義されている
ResDat構造体のnumにレス番号、linestrにレスの生データをセットしてKita::parseResDat()に送れば
ResDatの各項目に生データが入ります。例えばKita::DatToHtml()を見ると分かり易いかも。

実際にキャッシュの中にあるレスが表示されるまでの流れはこんな感じ。

(1) KitaHTMLPart::setup()のKita::DatManager::createDatInfo()でDatInfoクラスが
作られる際にDatInfo::initPrivate()の中のm_access->getcache()により、Accessクラスから各行の
生データ(unicodeにエンコード済み)がDatInfo::slotReceiveData()に送られて来て、行ごとに
DatInfo::copyOneLineToResDat()を呼んで、そこで resdat.num = num;、resdat.linestr = line;
とレスの番号と生データがResDat構造体にセットされる。

つづく
065142104/12/04 23:24:44ID:rHUEAtjX
つづき

(2) その後 KitaHTMLPart::load()、KitaHTMLPart::showResponses() 経由でKitaHTMLPartクラスから
レスを表示するためKitaDomTree::appendRes()が呼ばれると、そこからレスのDOMエレメントを作るため
KitaDomTree::createResElement()が呼ばれ、さらにHTMLテキストを得るためにDatInfo::getHTML()が呼ばれる。

(3) DatInfo::getHTML()からResDat構造体をパースするためDatInfo::parseDat() が呼ばれ、そこから
さらに Kita::parseResDat()が呼ばれてResDat構造体にHTMLなどがパースされて入る。

(4) あとはKitaDomTree::createResElement()に戻って、setInnerHTML()でHTMLがレンダリングされ、
KitaDomTree::appendRes()でレスがappendされて表示される。

(5) リロードで鯖からデータが送られて来たときも同じ感じでパースされる。

(注意点) DIVの中にTABLEやDIVがあると致命的に速度が遅くなることが分かったのでレスのDOMツリー構造を

DIV
|-TABLE タイトル
|-DIV 本文

から

DIV タイトル
DIV 本文

に簡略化してます。ただし、スタイルシートを使用する場合は速度より見た目を重視するということで、

DIV-TABLE タイトル
DIV 本文

とタイトルノードでTABLEタグを使用してます。タイトルノードの詳しい構造については
Kita::createTitleHTML()を参照してください。デフォルトのスタイルシートも多少変更してます。
065242104/12/04 23:35:57ID:rHUEAtjX
今後の予定は本題に戻って>>637の下の方に書いてあることをする予定。
しばらくはコードの内部の方に引きこもってUIとかの外部仕様はいじる予定は無いです。

あと>>650で間違った記述があったので少し修正

> ResDat構造体のnumにレス番号、linestrにレスの生データをセットしてKita::parseResDat()に送れば
> ResDatの各項目に生データが入ります。

-> ResDatの各項目に生データがパースされてHTMLなどのデータが入ります。
065342104/12/05 00:30:55ID:7ft/edw3
すいません、ひとつバグ。下みたいに直さないとレス抽出したとき落ちます。

*** part/kitadomtree.cpp.org 2004-12-04 23:02:26.000000000 +0900
--- part/kitadomtree.cpp 2004-12-05 00:28:22.255368280 +0900
***************
*** 77,83 ****
else{

if ( m_bufLng == 0 ) m_bufLng = mrg;
! else while ( num >= m_bufLng ) m_bufLng += delta;

m_titleElm.resize( m_bufLng );
m_bodyElm.resize( m_bufLng );
--- 77,83 ----
else{

if ( m_bufLng == 0 ) m_bufLng = mrg;
! while ( num >= m_bufLng ) m_bufLng += delta;

m_titleElm.resize( m_bufLng );
m_bodyElm.resize( m_bufLng );
0654kitaの中の人 ◆KITAulkOso 04/12/05 00:58:47ID:cOV8aKgn
CVS周りで入れたコード
・登録/削除のタイミングでお気に入りを保存(>>581)
・お気に入り周りのコード整理をちょっとだけ
DQ8という誘惑に負けてるのでコードあまり書いてませんorz

>>645
これは左クリックの話?右クリックメニューでいいのならそちらに入れたいです。

>>649
なるほど。それなら1-clickでコピー出来る方が便利ですね。
最悪configファイルを直接いじる形になるかもしれませんが、機能は入れます。
# たぶんKitaMainWindow::slotOpenURLRequestExt()をいじればいいので自分が担当かな。

>>650>>653
merged. めちゃくちゃ高速化されてますねぇ。とりあえず気になったのは
・「名前」の前にスペースが欲しい。
・検索したときの移動場所がおかしい(前にも同じ問題があったような)。
くらいです。
■ このスレッドは過去ログ倉庫に格納されています