summaryrefslogtreecommitdiff
path: root/utils/themeeditor/skindocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/themeeditor/skindocument.cpp')
-rw-r--r--utils/themeeditor/skindocument.cpp87
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
30SkinDocument::SkinDocument(QWidget *parent) : 30SkinDocument::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
40SkinDocument::~SkinDocument() 45SkinDocument::~SkinDocument()
@@ -45,7 +50,35 @@ SkinDocument::~SkinDocument()
45 50
46bool SkinDocument::requestClose() 51bool 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()
74void SkinDocument::codeChanged() 107void 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
102void SkinDocument::saveAs() 150void 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}