Major API changes about the saving of mime parts

From: Philip Van Hoof <spam pvanhoof be>

To: tinymail-devel-list gnome org

Subject: Major API changes about the saving of mime parts

Date: Sun, 15 Oct 2006 13:57:30 +0200

Saving the mime part (saving an attachment or a message) isn't
implemented in the gtk+ default types anymore.
That simply because the ui for saving it is obviously going to be
specific per E-mail client.
Mine used a popup-menu, but that doesn't mean that for example Modest
should be forced to also use the same popup or reimplement its own
message view component.
So I completed the strategy pattern by introducing a client or a
strategy caller: like the IFlyable and IFlyStrategy of Duck, Plane and
Bird which would have FlyWithAnimalWingsStrategy, CantFlyStrategy and
FlyWithMetalWingsStrategy and whatever.
I created that IFlyable type: TnyMimePartSaver
What one could do to create a viewer that can alos save a mime part,
like what the original TnyGtkMsgView did, would be to (for example)
inherit the TnyGtkMsgView and implement the TnyMimePartSaver interface.
class MyOwnMsgView extends TnyGtkMsgView implements TnyMimePartSaver
{
private Button save_button;
private Tny.SaveStrategy saver;
public MyOwnMsgView ()
{
this.save_button = new Button ();
this.save_button.Clicked ... = on_save_button_clicked;
}
public Tny.SaveStrategy get_save_strategy ()
{
if (this.saver == null)
this.saver = new TnyGtk.SaveStrategy ();
return this.saver;
}
public void set_save_strategy (Tny.SaveStrategy s)
{
this.saver = s;
}
public void perform_save (Tny.MimePart part)
{
this.get_save_strategy ().save (part);
}
public void on_save_button_clicked (object sender, ...)
{
this.perform_save (super.get_msg());
}
}
--
Philip Van Hoof, software developer at x-tend
home: me at pvanhoof dot be
gnome: pvanhoof at gnome dot org
work: vanhoof at x-tend dot be
http://www.pvanhoof.be - http://www.x-tend.be