]> Some of my projects - AniAdd.git/commitdiff
Use QSingleApplication.
authorAPTX <marek321@gmail.com>
Mon, 8 Aug 2011 23:24:41 +0000 (01:24 +0200)
committerAPTX <marek321@gmail.com>
Mon, 8 Aug 2011 23:24:41 +0000 (01:24 +0200)
aniadd.cpp
aniadd.h
main.cpp

index b30ec493d1f33e803b5dbdbdd9facc0d3b3eefc5..5fdc9e3ae20ed5f79ed8ca6d853934adc9136692 100644 (file)
 #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<RenameParser::RenameEngine::ParserType>());
 
-               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()
index 76681e2c5e74eddee5a42ca292b1b750d92a5bcc..1392757da24e314be43ff36d38c712be09d31493 100644 (file)
--- a/aniadd.h
+++ b/aniadd.h
@@ -1,12 +1,12 @@
 #ifndef RENAMETOOL_H
 #define RENAMETOOL_H
 
-#include <QApplication>
+#include <QtSingleApplication>
 
 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;
index 4bb4d48cd971482cf0eff7760f3a65662b60f688..c65c6651414eaae7b6089c33c2330faced564352 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -1,4 +1,5 @@
 #include "aniadd.h"
+#include <QDir>
 
 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();
 }