1
/* GDocsUploadDocument.cs
3
* GNOME Do is the legal property of its developers. Please refer to the
4
* COPYRIGHT file distributed with this
7
* This program is free software: you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation, either version 3 of the License, or
10
* (at your option) any later version.
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License
18
* along with this program. If not, see <http://www.gnu.org/licenses/>.
23
using System.Collections.Generic;
24
using System.Text.RegularExpressions;
30
using Google.GData.Client;
31
using Google.GData.Documents;
35
public sealed class GDocsUploadDocument : IAction
37
const string ExtPattern = @"\.(txt|doc|html|htm|odt|rtf|xls|ods|csv|tsv|tsb|ppt|pps|sxw|pdf)$";
40
get { return Catalog.GetString ("Upload Document"); }
43
public string Description {
44
get { return Catalog.GetString ("Upload a document to Google Docs"); }
48
//get { return "gDocsUploadIcon.png@" + GetType ().Assembly.FullName; }
49
get { return "document-send"; }
52
public Type[] SupportedItemTypes {
60
public Type[] SupportedModifierItemTypes {
68
public bool ModifierItemsOptional {
72
public bool SupportsItem (IItem item)
74
return IsValidFormat (item as IFileItem);
77
public bool SupportsModifierItemForItems (IItem[] item, IItem modItem)
82
public IItem[] DynamicModifierItemsForItem (IItem item)
87
public IItem[] Perform (IItem[] items, IItem[] modifierItems)
89
string fileName = (items[0] as IFileItem).Path;
90
string documentName = (modifierItems.Length > 0) ? (modifierItems[0] as ITextItem).Text : null;
93
returnItem = GDocs.UploadDocument (fileName, documentName);
95
if (returnItem == null)
98
return new IItem [] { returnItem, };
101
private bool IsValidFormat (IFileItem item)
103
// Supported uploading format by Google Docs
105
// Detailed info: http://documents.google.com/support/presentations/bin/answer.py?answer=50092
106
// http://documents.google.com/support/presentations/bin/answer.py?answer=37603
108
return new Regex (ExtPattern, RegexOptions.Compiled).IsMatch (item.Path);