SQLTrigger

http://rd-style.info/reader/?SQLTrigger
このエントリーをはてなブックマークに追加

SQL Trigger

PRS-G1/T1をちょっと便利にする、データベースの小細工(SQLトリガー)について。

使用方法

http://www.mobileread.com/forums/showthread.php?t=153444

使用例

「最近追加された書籍」を読んだ順にする

833 :名無しさん@お腹いっぱい。:2013/02/21(木) 21:54:20.12 ID:0RhmW0pE
「最近追加された書籍」を読んだ順にする奴。
トラブりにくいと思われる最小構成のを作ってみた。
読み終わった本の「追加日」を読み終わった時刻に変更するだけ。
(「続きから読む」と「最近追加された書籍」の1個目に同じ本が出ちゃうけど、
どうも、それを回避するために複雑になってるっぽいので)
強く言うけれども、自己責任で。

CREATE TRIGGER recently_opened_trigger AFTER UPDATE OF reading_time ON books
BEGIN
UPDATE books SET added_date = reading_time WHERE reading_time NOT NULL AND _id = new._id;
END; 

フォルダをコレクションに変換

745 :名無しさん@お腹いっぱい。:2011/11/26(土) 18:56:48.16 ID:5Lz/XN97
>>726
> 転送ソフトを使わず直接フォルダ分けして放り込んだ書籍データをフォルダ名のコレクションに
> 自動的に登録するなんてことも可能だったりします

どうやるの?教えてください。 
使い方
747 :名無しさん@お腹いっぱい。:2011/11/26(土) 19:07:41.18 ID:P+IoLzy0
>>723のリンク先にあるやり方で、このSQLトリガーを仕掛けてやる

CREATE TRIGGER auto_collection_trigger AFTER INSERT ON books WHEN length(new.file_path) > length(new.file_name)
BEGIN
INSERT OR IGNORE INTO collection (_id, title, source_id)
VALUES (
(SELECT _id FROM collection WHERE title = substr(new.file_path, 1, length(new.file_path) - length(new.file_name) - 1)),
substr(new.file_path, 1, length(new.file_path) - length(new.file_name) - 1),
new.source_id
);
INSERT INTO collections (collection_id, content_id)
VALUES (
(SELECT _id FROM collection WHERE title = substr(new.file_path, 1, length(new.file_path) - length(new.file_name) - 1)),
new._id
);
END

一応手元じゃ問題なく動いてるけど、使うなら自己責任でね 
注意点
752 :名無しさん@お腹いっぱい。:2011/11/26(土) 19:30:03.21 ID:P+IoLzy0
>>751
ちゃんと動いたか、よかったw

書籍としてデータベースに登録されるタイミングで動く物だから
ReaderStoreで買った書籍はデータが置かれたフォルダ名で登録されちゃうので注意
頻繁にStoreから買ってる人だとウザいかも

あと、WebからDLしたデータはdownloadフォルダに置かれるので、自動的にdownloadコレクションに登録されるよ

綴じ方向

始まり
544 :名無しさん@お腹いっぱい。:2011/11/03(木) 00:06:27.72 ID:Uxl14/B3
下記のSQLのTriggerを使うHackを応用して
preferencesテーブルにある本ごとの綴じ方向設定を
個別に指定できそうだな。

http://www.mobileread.com/forums/showthread.php?t=153444

フォルダごとのコレクションを自動的に作ることも、
Triggerを使えばできる気がしてきた。 
動作報告
686 :名無しさん@お腹いっぱい。:2011/11/04(金) 23:13:56.29 ID:NU+z4V1F
>>544
ktkr!!!
閉じ方向の明示指定できるようになった!
ノートの表示On/Off設定を弄ると、切り替えできるようにトリガーかけたから
Reader上の操作で設定切り替えもできる 
使い方(ノートの表示をトリガーに)
698 :名無しさん@お腹いっぱい。:2011/11/05(土) 08:24:45.36 ID:eZ0Qiex9
綴じ方向の変更、books.dbに対して以下のSQLでトリガしかけてやればOK
CREATE TRIGGER preference_shownotes_trigger AFTER UPDATE OF show_notes ON preference WHEN new.show_notes = 1
BEGIN
UPDATE preference SET binding_direction = 'auto' WHERE _id = new._id AND old.binding_direction = 'right';
UPDATE preference SET binding_direction = 'right' WHERE _id = new._id AND old.binding_direction = 'auto';
END

綴じ方向を変えたい書籍を見てる状態で、設定-ノートの表示をチェックをつけて
(チェック済みの場合は、いったん外してその場でもう一度チェックすればOK)
その状態でホームボタンでホームに戻れば、送り方向の切り替えできる
この設定は書籍ごとに保持される

チェックを外す操作では変更しないから、ノートの表示の設定機能とも共存できる 
使い方(修正版)
727 :名無しさん@お腹いっぱい。:2011/11/05(土) 23:17:06.13 ID:eZ0Qiex9
今気が付いた、>>698 のSQL、1行目の最後が欠けてるので修正です
CREATE TRIGGER preference_shownotes_trigger AFTER UPDATE OF show_notes ON preference WHEN new.show_notes = 1 AND old.show_notes = 0
BEGIN
UPDATE preference SET binding_direction = 'auto' WHERE _id = new._id AND old.binding_direction = 'right';
UPDATE preference SET binding_direction = 'right' WHERE _id = new._id AND old.binding_direction = 'auto';
END
>>698 のでも変更はされるけど、書籍を開く度に綴じ方向が入れ替わってしまいます... 

PDFリフロー

始まり
680 :名無しさん@お腹いっぱい。:2011/11/04(金) 22:22:40.73 ID:NU+z4V1F
おおお、無理やりreflowフラグ立てたらpdfでもリフローされたw
ただ、フォントサイズは選べないから実用性は微妙だ・・・
動作報告
700 :名無しさん@お腹いっぱい。:2011/11/05(土) 08:54:16.46 ID:eZ0Qiex9
reflow可能なようにタグ付けしたpdfを作って試してみたが
最初と最後のページはreflow無しと表示が変わらないとか
Fontサイズを大きくすると、ページが進まず、ずっと同じページでループするって
現象が起きた

他機種や英語版Readerでも完全じゃないみたいだから
pdfのreflowは難しいんだろうな

Sony Reader Tips / Site admin: RDXS-E
for "Reader Wi-Fi PRS-T1/PRS-G1"&"Touch Edition PRS-650/Pocket Edition PRS-350"
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 4.4.6 / HTML convert time to 0.031 sec.