diff options
author | Robert Bieber <robby@bieberphoto.com> | 2010-06-05 19:47:49 +0000 |
---|---|---|
committer | Robert Bieber <robby@bieberphoto.com> | 2010-06-05 19:47:49 +0000 |
commit | 47181b8b9b0e3e914243a463ad02a2eceab61c6e (patch) | |
tree | 11a75ac5d5d1a4e72a60284c7a4a1b74893568db /utils/themeeditor/skindocument.cpp | |
parent | 45ab395c2fb42445382a377314bd63ae216f40c4 (diff) | |
download | rockbox-47181b8b9b0e3e914243a463ad02a2eceab61c6e.tar.gz rockbox-47181b8b9b0e3e914243a463ad02a2eceab61c6e.zip |
Theme Editor: Got save/save-as functionality working and added Tango icons to the toolbar
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26593 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/skindocument.cpp')
-rw-r--r-- | utils/themeeditor/skindocument.cpp | 87 |
1 files changed, 72 insertions, 15 deletions
diff --git a/utils/themeeditor/skindocument.cpp b/utils/themeeditor/skindocument.cpp index 8617030180..3fb7d4871b 100644 --- a/utils/themeeditor/skindocument.cpp +++ b/utils/themeeditor/skindocument.cpp | |||
@@ -28,13 +28,18 @@ | |||
28 | #include <QFileDialog> | 28 | #include <QFileDialog> |
29 | 29 | ||
30 | SkinDocument::SkinDocument(QWidget *parent) : | 30 | SkinDocument::SkinDocument(QWidget *parent) : |
31 | QWidget(parent) | 31 | QWidget(parent), fileFilter(tr("WPS Files (*.wps *.rwps);;" |
32 | "SBS Files (*.sbs *.rsbs);;" | ||
33 | "FMS Files (*.fms *.rfms);;" | ||
34 | "All Skin Files (*.wps *.rwps *.sbs " | ||
35 | "*.rsbs *.fms *.rfms);;" | ||
36 | "All Files (*.*)")) | ||
32 | { | 37 | { |
33 | setupUI(); | 38 | setupUI(); |
34 | 39 | ||
35 | title = "Untitled"; | 40 | title = "Untitled"; |
36 | fileName = ""; | 41 | fileName = ""; |
37 | saved = true; | 42 | saved = ""; |
38 | } | 43 | } |
39 | 44 | ||
40 | SkinDocument::~SkinDocument() | 45 | SkinDocument::~SkinDocument() |
@@ -45,7 +50,35 @@ SkinDocument::~SkinDocument() | |||
45 | 50 | ||
46 | bool SkinDocument::requestClose() | 51 | bool SkinDocument::requestClose() |
47 | { | 52 | { |
48 | saveAs(); | 53 | if(editor->document()->toPlainText() != saved) |
54 | { | ||
55 | /* Spawning the "Are you sure?" dialog */ | ||
56 | QMessageBox confirm(this); | ||
57 | confirm.setText(title + tr(" has been modified.")); | ||
58 | confirm.setInformativeText(tr("Do you want to save your changes?")); | ||
59 | confirm.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | ||
60 | | QMessageBox::Cancel); | ||
61 | confirm.setDefaultButton(QMessageBox::Save); | ||
62 | int confirmation = confirm.exec(); | ||
63 | |||
64 | switch(confirmation) | ||
65 | { | ||
66 | case QMessageBox::Save: | ||
67 | save(); | ||
68 | /* After calling save, make sure the user actually went through */ | ||
69 | if(editor->document()->toPlainText() != saved) | ||
70 | return false; | ||
71 | else | ||
72 | return true; | ||
73 | |||
74 | case QMessageBox::Discard: | ||
75 | return true; | ||
76 | |||
77 | case QMessageBox::Cancel: | ||
78 | return false; | ||
79 | } | ||
80 | } | ||
81 | |||
49 | return true; | 82 | return true; |
50 | } | 83 | } |
51 | 84 | ||
@@ -74,11 +107,22 @@ void SkinDocument::setupUI() | |||
74 | void SkinDocument::codeChanged() | 107 | void SkinDocument::codeChanged() |
75 | { | 108 | { |
76 | model->changeTree(editor->document()->toPlainText().toAscii()); | 109 | model->changeTree(editor->document()->toPlainText().toAscii()); |
77 | if(saved == true) | 110 | |
111 | if(editor->document()->toPlainText() != saved) | ||
78 | { | 112 | { |
79 | saved = false; | 113 | if(title.length() > 0 && title[title.length() - 1] != '*') |
80 | title.append(tr("*")); | 114 | { |
81 | emit titleChanged(title); | 115 | title.append('*'); |
116 | emit titleChanged(title); | ||
117 | } | ||
118 | } | ||
119 | else | ||
120 | { | ||
121 | if(title.length() > 0 && title[title.length() - 1] == '*') | ||
122 | { | ||
123 | title.chop(1); | ||
124 | emit titleChanged(title); | ||
125 | } | ||
82 | } | 126 | } |
83 | } | 127 | } |
84 | 128 | ||
@@ -88,7 +132,7 @@ void SkinDocument::save() | |||
88 | 132 | ||
89 | if(!fout.exists()) | 133 | if(!fout.exists()) |
90 | { | 134 | { |
91 | QTimer::singleShot(0, this, SLOT(saveAs())); | 135 | saveAs(); |
92 | return; | 136 | return; |
93 | } | 137 | } |
94 | 138 | ||
@@ -96,22 +140,31 @@ void SkinDocument::save() | |||
96 | fout.write(editor->document()->toPlainText().toAscii()); | 140 | fout.write(editor->document()->toPlainText().toAscii()); |
97 | fout.close(); | 141 | fout.close(); |
98 | 142 | ||
99 | saved = true; | 143 | saved = editor->document()->toPlainText(); |
144 | QStringList decompose = fileName.split('/'); | ||
145 | title = decompose[decompose.count() - 1]; | ||
146 | emit titleChanged(title); | ||
147 | |||
100 | } | 148 | } |
101 | 149 | ||
102 | void SkinDocument::saveAs() | 150 | void SkinDocument::saveAs() |
103 | { | 151 | { |
104 | /* Determining the directory to open */ | 152 | /* Determining the directory to open */ |
105 | QSettings settings; | 153 | QString directory = fileName; |
106 | 154 | ||
155 | QSettings settings; | ||
107 | settings.beginGroup("SkinDocument"); | 156 | settings.beginGroup("SkinDocument"); |
108 | QString openDir = settings.value("defaultDirectory", "").toString(); | 157 | if(directory == "") |
158 | directory = settings.value("defaultDirectory", "").toString(); | ||
159 | |||
160 | fileName = QFileDialog::getSaveFileName(this, tr("Save Document"), | ||
161 | directory, fileFilter); | ||
162 | directory = fileName; | ||
163 | if(fileName == "") | ||
164 | return; | ||
109 | 165 | ||
110 | fileName = QFileDialog::getSaveFileName(this, tr("Save File"), openDir,""); | ||
111 | QString directory = fileName; | ||
112 | directory.chop(fileName.length() - fileName.lastIndexOf('/') - 1); | 166 | directory.chop(fileName.length() - fileName.lastIndexOf('/') - 1); |
113 | settings.setValue("defaultDirectory", directory); | 167 | settings.setValue("defaultDirectory", directory); |
114 | |||
115 | settings.endGroup(); | 168 | settings.endGroup(); |
116 | 169 | ||
117 | QFile fout(fileName); | 170 | QFile fout(fileName); |
@@ -119,5 +172,9 @@ void SkinDocument::saveAs() | |||
119 | fout.write(editor->document()->toPlainText().toAscii()); | 172 | fout.write(editor->document()->toPlainText().toAscii()); |
120 | fout.close(); | 173 | fout.close(); |
121 | 174 | ||
122 | saved = true; | 175 | saved = editor->document()->toPlainText(); |
176 | QStringList decompose = fileName.split('/'); | ||
177 | title = decompose[decompose.count() - 1]; | ||
178 | emit titleChanged(title); | ||
179 | |||
123 | } | 180 | } |