From: APTX Date: Mon, 8 Aug 2011 23:24:41 +0000 (+0200) Subject: Use QSingleApplication. X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=9aef855e025b5be0088dfca5488a052483b4119a;p=AniAdd.git Use QSingleApplication. --- diff --git a/aniadd.cpp b/aniadd.cpp index b30ec49..5fdc9e3 100644 --- a/aniadd.cpp +++ b/aniadd.cpp @@ -11,16 +11,17 @@ #include "mainwindow.h" AniAdd::AniAdd(int &argc, char **argv) : - QApplication(argc, argv), gui(0) + QtSingleApplication(argc, argv), gui(0) { m_instance = this; + QSettings::setDefaultFormat(QSettings::IniFormat); AniDBUdpClient::Client::instance()->setIdlePolicy(AniDBUdpClient::LogoutIdlePolicy); model = new FileModel(this); - loadSettings(); + connect(this, SIGNAL(messageReceived(QString)), this, SLOT(handleMessage(QString))); - createGui(); + loadSettings(); } AniAdd::~AniAdd() @@ -73,6 +74,14 @@ void AniAdd::setFilterResults(bool filterResults) m_filterResults = filterResults; } +void AniAdd::createGui() +{ + if (gui) + return; + + gui = new MainWindow(); + gui->show(); +} void AniAdd::addFiles() { @@ -109,6 +118,19 @@ void AniAdd::removeSelected() // model->removeItems(ui->tableView->selectionModel()->selectedIndexes()); } +void AniAdd::handleMessage(const QString &message) +{ +qDebug() << "handleMessage" << message; + if (!message.startsWith("open")) + return; + + int pos; + if ((pos = message.indexOf(' ')) == -1) + return; + + model->addFile(message.mid(pos + 1)); +} + void AniAdd::saveSettings() { QSettings settings; @@ -156,18 +178,15 @@ void AniAdd::loadSettings() settings.value("parserType", RenameParser::RenameEngine::AniAdd) .value()); - fileModel()->renameEngine()->parse(settings.value("renameString").toString()); + QString renameString = settings.value("renameString").toString(); + if (!renameString.endsWith(QChar('\n'))) + renameString += QChar('\n'); + fileModel()->renameEngine()->parse(renameString); m_renameEnv = settings.value("renameEnv").toString(); m_filterResults = settings.value("filterResult").toBool(); settings.endGroup(); } -void AniAdd::createGui() -{ - gui = new MainWindow(); - gui->show(); -} - AniAdd *AniAdd::m_instance = 0; AniAdd *AniAdd::instance() diff --git a/aniadd.h b/aniadd.h index 76681e2..1392757 100644 --- a/aniadd.h +++ b/aniadd.h @@ -1,12 +1,12 @@ #ifndef RENAMETOOL_H #define RENAMETOOL_H -#include +#include class FileModel; class MainWindow; -class AniAdd : public QApplication +class AniAdd : public QtSingleApplication { Q_OBJECT Q_PROPERTY(QString lastDirectory READ lastDirectory WRITE setLastDirectory); @@ -30,6 +30,8 @@ public: bool filterResults() const; void setFilterResults(bool filterResults); + void createGui(); + signals: public slots: @@ -40,12 +42,13 @@ public slots: //void on_actionAddDirectories_triggered(); +protected slots: + void handleMessage(const QString &message); + private: void saveSettings(); void loadSettings(); - void createGui(); - QString m_lastDirectory; QString m_renameEnv; diff --git a/main.cpp b/main.cpp index 4bb4d48..c65c665 100644 --- a/main.cpp +++ b/main.cpp @@ -1,4 +1,5 @@ #include "aniadd.h" +#include int main(int argc, char *argv[]) { @@ -8,5 +9,13 @@ int main(int argc, char *argv[]) AniAdd app(argc, argv); + if (app.isRunning()) + { + if (app.argc() >= 2) + app.sendMessage("open " + QDir::fromNativeSeparators(app.arguments()[1])); + return 0; + } + + app.createGui(); return app.exec(); }