2020年9月6日日曜日

MailExtensions版 Priority Switcher

Thunderbird 78用のPriority Switcherを作成しました。

Priority Switcher 2.0.1

旧バージョンと比べてだいぶ操作が変わっているので、簡単に説明します。前のほうがいいというところもあると思いますが、制限が多くこのような形になってしまいました。


重要度の表示、変更

旧バージョンでは、スレッドペインにアイコンを追加して、重要度の表示や切り替えをしていましたが、MailExtensions化にともないできなくなってしまいました。(がんばって実装したらできるのかもしれませんが…)

そこで、これらの機能をツールバーボタンに集約しました。以下のように、ツールバーボタンのアイコンとテキストで、選択中のメッセージの重要度を表示します。



また、ボタンをクリックすると、以下のようにポップアップが表示されます。ここでラジオボックスをクリックすると、重要度を変更できます。リセットをクリックすると、元の重要度に戻ります。



コンテキストメニューにも、ポップアップと同様のメニューがあるので、そちらからも変更できます。

ちなみに、スレッドペインへのアドオンでの項目追加は、開発元へ要望としては挙がっています。これが対応されたら、スレッドペインでの重要度表示、切り替えも対応検討します。

Add an API to allow adding columns to the message list


メッセージソースの書き換え

これは、旧バージョンと同じ仕様です。

重要度を変更した際、デフォルト設定では、Thunderbirdのインデックスファイル(.msf)のみを書き換えます。この場合、以下の制限があります。
  • インデックスファイルを再構築すると重要度がもとに戻ってしまう。フォルダの修復などをすると発生。
  • IMAPで別のメールクライアントでメッセージを開いても、重要度の変更は反映されない(もとの重要度のまま)。

これを回避するには、メッセージ本体を書き換える必要があります。ポップアップ、コンテキストメニューに「ソースを書き換え」というのがあるので、これを実行すると、新たに重要度を書き換えたメッセージを作成し、古いメッセージを削除します。メールのコピー、編集、削除が発生するので、メールのサイズや環境によっては、少し時間がかかります。

また、この書き換え処理を、重要度を変更したとに自動で実施するオプションもあります。選択肢として、
  • 常時自動で書き換える
  • IMAPサーバのときのみ、自動で書き換える
が選べます。

インデックスファイルの再構築は、それほど起こることではないと思うので、自動書き換えをする場合は「IMAPのときのみ」の運用がいいかなと思います。

また、この書き換えは、IMAPサーバによってはうまく動かないかもしれません。その場合は、私がそのサーバを使って確認することができないので、仕様とさせてください。実は、Gmail IMAPがその筆頭で、ワークアラウンドを入れて動くようにしています。


重要度ヘッダ

重要度を表すメールヘッダはいくつかありますが、ThunderbirdはX-Priorityしかみていません。今回、新規に作り直すにあたって、過去要望されていたほかのヘッダも見るオプションを作りました。ただし、あくまで、Priority Switcherのアイコン表示だけで、スレッドペインの重要度欄には影響しません。

オプションに、「Importance, Priority, X-MSMail-Priorityも解釈する」という項目があるので、これを有効にしてください。デフォルトではOFFになっています。

解釈するメールヘッダとアイコン表示の関係は以下になります。

アイコン表示
X-Priority
Importance
Priority
X-MSMail-Priority
最高
1
High
Urgent
High
2
-
-
-
標準
3
Normal
Normal
Normal
4
-
-
-
最低
5
Low
Non-urgent
Low
 
この機能は、実装したものの、これらのヘッダがあるメールがなく、動作確認できていません。おかしい動きがあれば、教えてください。


メッセージ削除時の重要度チェック

重要度が高いメッセージ、スター付きのメッセージの削除時に警告をだすことができます。旧バージョンでは、Thunderbirdの削除機能をつぶしてやっていましたが、今回は、Thunderbirdの機能はそのまま残し、Priority Switcherの機能として実装しました。ちょっとここは、不満のある方も多いと思いますが、MailExtensionsの制約として許してください。

まず、オプションを開いて、チェックの条件を設定してください。
  • 警告を表示する重要度(デフォルト:高以上)
  • スター付きのメッセージの削除で警告するかどうか(デフォルト:ON)
  • 迷惑メールはチェックから除外するかどうか(デフォルト:ON)
を設定できます。

最後の迷惑メールの設定は、ONのままでいいかと思います。迷惑メールフィルタの精度がよくない場合は、チェックを外しておいたほうが安全かもしれません。

設定ができたら、ポップアップ、コンテキストメニューに「重要度をチェックしてメッセージを削除」というのがあるので、メッセージを選択した状態でこれを実行してください。選択しているメッセージに設定した条件にマッチしたものがあると、以下のアラートが出ます。(味気なくてすみません…)



削除してよければ、「削除」、やめたければ「キャンセル」または×ボタンを押してください。「高重要度のメッセージを除く」をチェックして「削除」ボタンを押すと、条件にマッチしたメッセージを除外して削除ができます。

警告ウィンドウが表示されているときに、メッセージの選択を変更して削除を押しても、前の選択状態で削除を実行するので注意してください。モーダルダイアログで選択変更できないようにできればよかったのですが、これも、MailExtensionsの仕様でできませんでした。

このチェック付き削除は、キーボードショートカットからも実行できます。デフォルトではOFFになっているので、キーを設定して使用してください。キー設定は、アドオンマネージャを開いて、歯車ボタンの「拡張機能のショートカットキーの管理」からできます。

また、コンテキストメニュー、ツールバーボタン(ゴミ箱アイコンのとき。後述。)をShiftキーを押しながら実行すると、メッセージをゴミ箱に移動するのではなく、完全に削除します。


ツールバーボタンのコマンドの選択

MailExtensionsの制約で、アドオンはツールバーボタンを一個しか持てません。そのため、1つのツールバーボタンに機能を詰め込んでいます。オプションに「ツールバーコマンド」のセクションがあるので、ここで好みの設定に変えてください。

設定項目は、
  • 重要度を変更する
  • 重要度をチェックしてメッセージを削除する
の2つがあって、この組み合わせで、ツールバーボタンの表示、動作が変わります。

重要度を変更する
重要度をチェックしてメッセージを削除する
アイコン
ポップアップ
X
X
重要度表示
表示される。「重要度をチェックしてメッセージを削除」も表示される。
X
-
重要度表示
表示される。「重要度をチェックしてメッセージを削除」は表示されない。
-
X
ゴミ箱アイコン
表示されない。ボタンをクリックすると「重要度をチェックしてメッセージを削除」が実行される。
-
-
重要度表示
表示されない。ボタンをクリックしても何も起きない。
 
3番目(ゴミ箱アイコン)は、前記の「メール削除時の重要度チェック」に不満な方へのワークアラウンドのつもりで用意しました。重要度の表示と変更がツールバーボタンでできなくなりますが、通常のゴミ箱ボタンのように使用できます。削除機能は別アドオンに切り出そうかとも思ったのですが、バージョンアップで難民が出そうなので、苦肉の策ですがこの方法をとりました。


簡単にといいながら、結構かいてしまいました。使い方は以上になります。バグや要望等ありましたら、コメントにお願いします。



1 件のコメント:

h.ogi さんのコメント...

v2.0.2を公開しました。余分なアクセスパーミッション(tabs/activeTab)を要求していたので削除しました。

設定が余分だっただけで、変な処理をしていたわけではないのでご心配なく。

人気の投稿(過去7日間)