* Added new store actions: create/remove/rename/delete folder
[modest] / src / modest-tny-store-actions.c
1 /* Copyright (c) 2006, Nokia Corporation
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  *   notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  *   notice, this list of conditions and the following disclaimer in the
12  *   documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Nokia Corporation nor the names of its
14  *   contributors may be used to endorse or promote products derived from
15  *   this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
18  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29
30 #include <string.h>
31 #include <glib.h>
32 #include <tny-msg.h>
33 #include <tny-folder.h>                 
34 #include <tny-folder-store.h>
35 #include <tny-folder-store-query.h>
36 #include <tny-header.h>
37 #include <tny-account.h>        
38 #include <tny-account-store.h>
39 #include <tny-store-account.h>  
40 #include <tny-store-account.h>
41 #include <tny-stream-camel.h>
42 #include "modest-tny-store-actions.h"
43
44 TnyFolder *
45 modest_tny_store_actions_create_folder (TnyFolderStore *parent,
46                                         const gchar *name)
47 {
48         g_return_val_if_fail (TNY_IS_FOLDER_STORE (parent), NULL);
49         g_return_val_if_fail (name, NULL);
50
51         TnyFolder *new_folder = NULL;
52         TnyStoreAccount *store_account;
53
54         /* Create the folder */
55         new_folder = tny_folder_store_create_folder (parent, name);
56         if (!new_folder) 
57                 return NULL;
58
59         /* Subscribe to folder */
60         if (!tny_folder_is_subscribed (new_folder)) {
61                 store_account = tny_folder_get_account (TNY_FOLDER (parent));
62                 tny_store_account_subscribe (store_account, new_folder);
63         }
64
65         return new_folder;
66 }
67
68 void
69 modest_tny_store_actions_remove_folder (TnyFolder *folder)
70 {
71         TnyFolderStore *folder_store;
72
73         g_return_if_fail (TNY_IS_FOLDER (folder));
74
75         /* Get folder store */
76         folder_store = TNY_FOLDER_STORE (tny_folder_get_account (folder));
77
78         /* Remove folder */
79         tny_folder_store_remove_folder (folder_store, folder);
80
81         /* Free instance */
82         g_object_unref (G_OBJECT (folder));
83 }
84
85 void modest_tny_store_actions_rename_folder (TnyFolder *folder, 
86                                              const gchar *name)
87 {
88         g_return_if_fail (TNY_IS_FOLDER (folder));
89         g_return_if_fail (name);
90
91         tny_folder_set_name (folder, name);
92 }
93
94 void modest_tny_store_actions_move_folder (TnyFolder *folder, 
95                                            TnyFolderStore *parent)
96 {
97         /* TODO: set parent as parent */
98 }