1
0
Fork 0
forked from len0rd/rockbox

Theme Editor: Implemented save/save as in the configuration file editor

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26863 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Bieber 2010-06-15 20:55:56 +00:00
parent 0c26a790ee
commit 267a446887
5 changed files with 70 additions and 7 deletions

View file

@ -116,6 +116,7 @@ void ConfigDocument::saveAs()
saved = toPlainText(); saved = toPlainText();
emit titleChanged(title()); emit titleChanged(title());
emit configFileChanged(file());
} }
@ -150,7 +151,7 @@ bool ConfigDocument::requestClose()
return false; return false;
} }
} }
return false; return true;
} }
QString ConfigDocument::toPlainText() const QString ConfigDocument::toPlainText() const
@ -185,6 +186,11 @@ void ConfigDocument::addRow(QString key, QString value)
QObject::connect(delButton, SIGNAL(clicked()), QObject::connect(delButton, SIGNAL(clicked()),
this, SLOT(deleteClicked())); this, SLOT(deleteClicked()));
QObject::connect(keyEdit, SIGNAL(textChanged(QString)),
this, SLOT(textChanged()));
QObject::connect(valueEdit, SIGNAL(textChanged(QString)),
this, SLOT(textChanged()));
ui->configBoxes->addLayout(layout); ui->configBoxes->addLayout(layout);
containers.append(layout); containers.append(layout);
@ -219,3 +225,11 @@ void ConfigDocument::addClicked()
{ {
addRow(tr("Key"), tr("Value")); addRow(tr("Key"), tr("Value"));
} }
void ConfigDocument::textChanged()
{
if(toPlainText() != saved)
emit titleChanged(title() + "*");
else
emit titleChanged(title());
}

View file

@ -67,9 +67,13 @@ private:
void addRow(QString key, QString value); void addRow(QString key, QString value);
signals:
void configFileChanged(QString);
private slots: private slots:
void deleteClicked(); void deleteClicked();
void addClicked(); void addClicked();
void textChanged();
}; };
#endif // CONFIGDOCUMENT_H #endif // CONFIGDOCUMENT_H

View file

@ -201,7 +201,7 @@ void EditorWindow::shiftTab(int index)
{ {
TabContent* widget = dynamic_cast<TabContent*> TabContent* widget = dynamic_cast<TabContent*>
(ui->editorTabs->currentWidget()); (ui->editorTabs->currentWidget());
if(index < 0 || widget->type() != TabContent::Skin) if(index < 0)
{ {
ui->parseTree->setModel(0); ui->parseTree->setModel(0);
ui->actionSave_Document->setEnabled(false); ui->actionSave_Document->setEnabled(false);
@ -210,6 +210,13 @@ void EditorWindow::shiftTab(int index)
ui->actionToolbarSave->setEnabled(false); ui->actionToolbarSave->setEnabled(false);
ui->fromTree->setEnabled(false); ui->fromTree->setEnabled(false);
} }
else if(widget->type() == TabContent::Config)
{
ui->actionSave_Document->setEnabled(true);
ui->actionSave_Document_As->setEnabled(true);
ui->actionClose_Document->setEnabled(true);
ui->actionToolbarSave->setEnabled(true);
}
else else
{ {
/* Syncing the tree view and the status bar */ /* Syncing the tree view and the status bar */
@ -318,6 +325,34 @@ void EditorWindow::openProject()
} }
void EditorWindow::configFileChanged(QString configFile)
{
QSettings settings;
settings.beginGroup("ProjectModel");
if(QFile::exists(configFile))
{
if(project)
delete project;
project = new ProjectModel(configFile, this);
ui->projectTree->setModel(project);
QObject::connect(ui->projectTree, SIGNAL(activated(QModelIndex)),
project, SLOT(activated(QModelIndex)));
configFile.chop(configFile.length() - configFile.lastIndexOf('/') - 1);
settings.setValue("defaultDirectory", configFile);
}
settings.endGroup();
}
void EditorWindow::tabTitleChanged(QString title) void EditorWindow::tabTitleChanged(QString title)
{ {
TabContent* sender = dynamic_cast<TabContent*>(QObject::sender()); TabContent* sender = dynamic_cast<TabContent*>(QObject::sender());
@ -342,7 +377,7 @@ void EditorWindow::closeEvent(QCloseEvent* event)
/* Closing all the tabs */ /* Closing all the tabs */
for(int i = 0; i < ui->editorTabs->count(); i++) for(int i = 0; i < ui->editorTabs->count(); i++)
{ {
if(!dynamic_cast<SkinDocument*> if(!dynamic_cast<TabContent*>
(ui->editorTabs->widget(i))->requestClose()) (ui->editorTabs->widget(i))->requestClose())
{ {
event->ignore(); event->ignore();

View file

@ -53,6 +53,9 @@ public:
protected: protected:
virtual void closeEvent(QCloseEvent* event); virtual void closeEvent(QCloseEvent* event);
public slots:
void configFileChanged(QString configFile);
private slots: private slots:
void showPanel(); void showPanel();
void newTab(); void newTab();

View file

@ -114,11 +114,18 @@ QVariant ProjectModel::data(const QModelIndex &index, int role) const
void ProjectModel::activated(const QModelIndex &index) void ProjectModel::activated(const QModelIndex &index)
{ {
if(index.row() == 0) if(index.row() == 0)
mainWindow->loadConfigTab(new ConfigDocument(settings, {
ConfigDocument* doc = new ConfigDocument(settings,
settings.value("themebase", settings.value("themebase",
"") + "/" + "") + "/" +
files[index.row()])); files[index.row()]);
QObject::connect(doc, SIGNAL(configFileChanged(QString)),
mainWindow, SLOT(configFileChanged(QString)));
mainWindow->loadConfigTab(doc);
}
else else
{
mainWindow->loadTabFromSkinFile(settings.value("themebase", "") mainWindow->loadTabFromSkinFile(settings.value("themebase", "")
+ "/" + files[index.row()]); + "/" + files[index.row()]);
}
} }