OSDN Git Service

0685f3fc3deb65eafd4c57f3f279cd13cc9b0677
[qt-creator-jp/qt-creator-jp.git] / src / plugins / coreplugin / ifile.h
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
8 **
9 ** No Commercial Usage
10 **
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 **
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file.  Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights.  These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
31 **
32 **************************************************************************/
33
34 #ifndef IFILE_H
35 #define IFILE_H
36
37 #include "core_global.h"
38 #include <QtCore/QObject>
39
40 namespace Core {
41
42 class MimeType;
43
44 class CORE_EXPORT IFile : public QObject
45 {
46     Q_OBJECT
47
48 public:
49     // This enum must match the indexes of the reloadBehavior widget
50     // in generalsettings.ui
51     enum ReloadSetting {
52         AlwaysAsk = 0,
53         ReloadUnmodified = 1,
54         IgnoreAll = 2
55     };
56
57     enum Utf8BomSetting {
58         AlwaysAdd = 0,
59         OnlyKeep = 1,
60         AlwaysDelete = 2
61     };
62
63     enum ChangeTrigger {
64         TriggerInternal,
65         TriggerExternal
66     };
67
68     enum ChangeType {
69         TypeContents,
70         TypePermissions,
71         TypeRemoved
72     };
73
74     enum ReloadBehavior {
75         BehaviorAsk,
76         BehaviorSilent
77     };
78
79     enum ReloadFlag {
80         FlagReload,
81         FlagIgnore
82     };
83
84     IFile(QObject *parent = 0) : QObject(parent) {}
85     virtual ~IFile() {}
86
87     virtual bool save(const QString &fileName = QString()) = 0;
88     virtual QString fileName() const = 0;
89
90     virtual QString defaultPath() const = 0;
91     virtual QString suggestedFileName() const = 0;
92     virtual QString mimeType() const = 0;
93
94     virtual bool isModified() const = 0;
95     virtual bool isReadOnly() const = 0;
96     virtual bool isSaveAsAllowed() const = 0;
97
98     virtual ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const = 0;
99     virtual void reload(ReloadFlag flag, ChangeType type) = 0;
100     virtual void rename(const QString &newName) = 0;
101
102     virtual void checkPermissions() {}
103
104 signals:
105     void changed();
106
107     void aboutToReload();
108     void reloaded();
109 };
110
111 } // namespace Core
112
113 #endif // IFILE_H