1
// EmpathySetStatusAction.cs
4
// Xavier Calland <xavier.calland@gmail.com>
8
// This program is free software: you can redistribute it and/or modify
9
// it under the terms of the GNU Lesser General Public License as published by
10
// the Free Software Foundation, either version 3 of the License, or
11
// (at your option) any later version.
13
// This program is distributed in the hope that it will be useful,
14
// but WITHOUT ANY WARRANTY; without even the implied warranty of
15
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
// GNU Lesser General Public License for more details.
18
// You should have received a copy of the GNU Lesser General Public License
19
// along with this program. If not, see <http://www.gnu.org/licenses/>.
24
using System.Collections.Generic;
33
namespace EmpathyPlugin
35
public class EmpathySetStatusAction : Act
37
public EmpathySetStatusAction ()
41
public override string Name
43
get { return AddinManager.CurrentLocalizer.GetString ("Set status"); }
46
public override string Description
48
get { return AddinManager.CurrentLocalizer.GetString ("Set empathy status message"); }
51
public override string Icon
53
get { return "empathy"; }
56
public override IEnumerable<Type> SupportedItemTypes
59
yield return typeof (EmpathyStatusItem);
60
yield return typeof (ITextItem);
64
public override IEnumerable<Type> SupportedModifierItemTypes
67
yield return typeof (ITextItem);
68
yield return typeof (EmpathyStatusItem);
72
public override bool ModifierItemsOptional
77
public override bool SupportsModifierItemForItems (IEnumerable<Item> items, Item modItem)
79
if (items.First () is EmpathySavedStatusItem || modItem is EmpathySavedStatusItem)
81
if (items.First () is EmpathyStatusItem && modItem is ITextItem)
83
if (items.First () is ITextItem && modItem is EmpathyStatusItem)
88
public override IEnumerable<Item> Perform (IEnumerable<Item> items, IEnumerable<Item> modItems)
90
ConnectionPresenceType status;
95
if (items.First () is EmpathySavedStatusItem)
97
status = (items.First () as EmpathySavedStatusItem).Status;
98
message = (items.First () as EmpathySavedStatusItem).Message;
99
EmpathyPlugin.SetAvailabilityStatus(status, message);
101
else if (items.First () is EmpathyStatusItem)
103
status = (items.First () as EmpathyStatusItem).Status;
105
message = (modItems.First () as ITextItem).Text;
106
EmpathyPlugin.SetAvailabilityStatus(status, message);
108
else if (items.First () is ITextItem)
111
status = (modItems.First () as EmpathyStatusItem).Status;
113
status = ConnectionPresenceType.Available;
114
message = (items.First () as ITextItem).Text;
115
EmpathyPlugin.SetAvailabilityStatus(status, message);
120
Log<EmpathySetStatusAction>.Error ("Could not set Empathy status: {0}", e.Message);
121
Log<EmpathySetStatusAction>.Debug (e.StackTrace);