sync with tizen_2.0
[platform/framework/native/appfw.git] / inc / FSysEnvironment.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file        FSysEnvironment.h
20  * @brief       This is the header file for the %Environment class.
21  *
22  * This header file contains the declarations of the %Environment class.
23  */
24
25 #ifndef _FSYS_ENVIRONMENT_H_
26 #define _FSYS_ENVIRONMENT_H_
27
28 #include <FBaseString.h>
29
30 namespace Tizen { namespace System
31 {
32
33 /**
34  * @enum        PredefinedDirectoryType
35  *
36  * Defines the type of the pre-defined directory used to classify files to be stored.
37  *
38  * @since 2.0
39  */
40 enum PredefinedDirectoryType
41 {
42         PREDEFINED_DIRECTORY_IMAGES = 0, /** The directory for image files to be stored in internal storage (read-write permission) */
43         PREDEFINED_DIRECTORY_SOUNDS,     /** the directory for sound files to be stored in internal storage (read-write permission) */
44         PREDEFINED_DIRECTORY_VIDEOS,     /** The directory for video files to be stored in internal storage (read-write permission) */
45         PREDEFINED_DIRECTORY_CAMERA,     /** The directory for files to be stored in internal storage by camera application (read-write permission) */
46         PREDEFINED_DIRECTORY_DOWNLOADS,  /** The directory for files to be stored in internal storage by download manager (read-write permission) */
47         PREDEFINED_DIRECTORY_OTHERS,     /** The directory for other files to be stored in internal storage (read-write permission) */
48
49         PREDEFINED_DIRECTORY_EXTERNAL_IMAGES = 100,     /** The directory for image files to be stored in external MMC (read-write permission) */
50         PREDEFINED_DIRECTORY_EXTERNAL_SOUNDS,           /** the directory for sound files to be stored in external MMC (read-write permission) */
51         PREDEFINED_DIRECTORY_EXTERNAL_VIDEOS,           /** The directory for video files to be stored in external MMC (read-write permission) */
52         PREDEFINED_DIRECTORY_EXTERNAL_CAMERA,           /** The directory for files to be stored in external MMC by camera application (read-write permission) */
53         PREDEFINED_DIRECTORY_EXTERNAL_DOWNLOADS,        /** The directory for files to be stored in external MMC by download manager (read-write permission) */
54         PREDEFINED_DIRECTORY_EXTERNAL_OTHERS,           /** The directory for other files to be stored in external MMC (read-write permission) */
55
56         PREDEFINED_DIRECTORY_APPLICATIONS = 200,        /** The directory for applications to be installed in internal storage (read-only permission) */
57         PREDEFINED_DIRECTORY_EXTERNAL_APPLICATIONS,     /** The directory for applications to be installed in external MMC (read-only permission) */
58 };
59
60 /**
61  * @class       Environment
62  * @brief       This class provides methods for getting the system environment variables.
63  *
64  * @since 2.0
65  *
66  * @final       This class is not intended for extension.
67  *
68  * The %Environment class provides methods for getting the system environment variables.
69  */
70 class _OSP_EXPORT_ Environment
71 {
72
73 public:
74         /**
75         * Gets the path for the media directory that is usually used to store media contents.
76         *
77         * @since 2.0
78         *
79         * @return       The media directory path
80         */
81         static Tizen::Base::String GetMediaPath(void);
82
83         /**
84         * Gets the path for the default download directory that is usually used to store downloaded contents by the Tizen::Content::DownloadManager class.
85         *
86         * @since 2.0
87         *
88         * @return       The default download directory path
89         */
90         static Tizen::Base::String GetDefaultDownloadPath(void);
91
92         /**
93         * Gets the path for the external storage.
94         *
95         * @since 2.0
96         *
97         * @return       The external storage directory path
98         */
99         static Tizen::Base::String GetExternalStoragePath(void);
100
101         /**
102         * Gets the directory path according to the pre-defined directory type.
103         *
104         * @since        2.0
105         *
106         * @return       The pre-defined directory path according to the specified @c dirType, @n
107         *               else an empty string if the specified @c dirType is invalid
108         * @param[in]    dirType The pre-defined directory type
109         * @remarks      The directory path for some directory types such as IMAGES, SOUNDS, VIDEOS, CAMERA, DOWNLOADS, and OTHERS may not yet exist,
110         *               so you must make sure that it exists before using it.
111         * @see          PredefinedDirectoryType
112         * @see          Tizen::Io::Directory::Create()
113         */
114         static Tizen::Base::String GetPredefinedPath(PredefinedDirectoryType dirType);
115
116 private:
117         /**
118         * The implementation of this constructor is intentionally blank to prohibit creation of an instance.
119         *
120         * @since 2.0
121         */
122         Environment(void);
123
124         /**
125         * The implementation of this destructor is intentionally blank because an instance cannot be created.
126         *
127         * @since 2.0
128         */
129         ~Environment(void);
130
131         /**
132         * This copy constructor is intentionally declared as private to prohibit copying.
133         *
134         * @since 2.0
135         */
136         Environment(const Environment& rhs);
137
138         /**
139         * This copy assignment operator is intentionally declared as private to prohibit copying.
140         *
141         * @since 2.0
142         */
143         Environment& operator =(const Environment& rhs);
144
145 }; // Environment
146
147 }} // Tizen::System
148
149 #endif // _FSYS_ENVIRONMENT_H_