RazorAutostartEntry => LxQt::AutostartEntry
authorAlexander Sokolov <sokoloff.a@gmail.com>
Sun, 6 Oct 2013 08:03:11 +0000 (12:03 +0400)
committerAlexander Sokolov <sokoloff.a@gmail.com>
Sun, 6 Oct 2013 08:03:11 +0000 (12:03 +0400)
CMakeLists.txt
lxqtautostartentry.cpp [new file with mode: 0644]
lxqtautostartentry.h [new file with mode: 0644]
razorautostartentry.cpp [deleted file]
razorautostartentry.h [deleted file]

index d4ee6b0..c884627 100644 (file)
@@ -24,7 +24,7 @@ set(PUB_HDRS
 
     lxqtpower/lxqtpower.h
     razornotification.h
-    razorautostartentry.h
+    lxqtautostartentry.h
     translatorsinfo/translatorsinfo.h
     razorgridlayout.h
     rotatedwidget.h
@@ -58,7 +58,7 @@ set(SRCS
     lxqtpower/lxqtpower.cpp
     lxqtpower/lxqtpowerproviders.cpp
     razornotification.cpp
-    razorautostartentry.cpp
+    lxqtautostartentry.cpp
     translatorsinfo/translatorsinfo.cpp
     razorgridlayout.cpp
     rotatedwidget.cpp
diff --git a/lxqtautostartentry.cpp b/lxqtautostartentry.cpp
new file mode 100644 (file)
index 0000000..8547e88
--- /dev/null
@@ -0,0 +1,128 @@
+/* BEGIN_COMMON_COPYRIGHT_HEADER
+ * (c)LGPL2+
+ *
+ * Razor - a lightweight, Qt based, desktop toolset
+ * http://razor-qt.org
+ *
+ * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * END_COMMON_COPYRIGHT_HEADER */
+
+#include "lxqtautostartentry.h"
+#include <qtxdg/xdgautostart.h>
+#include <qtxdg/xdgdirs.h>
+#include <QtCore/QFileInfo>
+
+using namespace LxQt;
+
+AutostartEntry::AutostartEntry() :
+    mLocalState(StateNone), mSystem(false)
+{
+}
+
+AutostartEntry::AutostartEntry(const QString& name):
+    mLocalState(StateNone), mSystem(false)
+{
+    foreach (const QString& dir, XdgDirs::autostartDirs())
+    {
+        QString path = QString("%1/%2").arg(dir, name);
+        if (QFile(path).exists())
+        {
+            mSystemFile.load(path);
+            mSystem = true;
+            break;
+        }
+    }
+
+    QString path = QString("%1/%2").arg(XdgDirs::autostartHome(), name);
+    if (QFile(path).exists())
+    {
+        mLocalFile.load(path);
+        mLocalState = StateExists;
+    }
+}
+
+void AutostartEntry::setFile(const XdgDesktopFile& file)
+{
+    bool local = isLocal();
+    if (mSystem && local && file == mSystemFile)
+    {
+        removeLocal();
+    }
+    else
+    {
+        if (local)
+            mLocalState = StateModified;
+        else
+            mLocalState = StateTransient;
+        mLocalFile = file;
+    }
+}
+
+bool AutostartEntry::removeLocal()
+{
+    if (!isLocal())
+        return false;
+
+    if (mLocalState == StateTransient)
+        mLocalState = StateNone;
+    else
+        mLocalState = StateDeleted;
+
+    return !mSystem;
+}
+
+const XdgDesktopFile& AutostartEntry::file() const
+{
+    return isLocal() ? mLocalFile : mSystemFile;
+}
+
+QString AutostartEntry::name() const
+{
+    return QFileInfo(file().fileName()).fileName();
+}
+
+void AutostartEntry::setEnabled(bool enable)
+{
+    XdgDesktopFile f = file();
+    if (enable)
+        f.removeEntry("Hidden");
+    else
+        f.setValue("Hidden", true);
+
+    setFile(f);
+}
+
+bool AutostartEntry::isEnabled() const
+{
+    return !isEmpty() && !file().value("Hidden", false).toBool();
+}
+
+bool AutostartEntry::commit()
+{
+    if (mLocalState == StateDeleted)
+    {
+        mLocalState = StateNone;
+        return QFile::remove(mLocalFile.fileName());
+    }
+    else if (mLocalState == StateModified || mLocalState == StateTransient)
+    {
+        mLocalState = StateExists;
+        return mLocalFile.save(XdgAutoStart::localPath(mLocalFile));
+    }
+    return true;
+}
diff --git a/lxqtautostartentry.h b/lxqtautostartentry.h
new file mode 100644 (file)
index 0000000..0f5da67
--- /dev/null
@@ -0,0 +1,113 @@
+/* BEGIN_COMMON_COPYRIGHT_HEADER
+ * (c)LGPL2+
+ *
+ * Razor - a lightweight, Qt based, desktop toolset
+ * http://razor-qt.org
+ *
+ * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * END_COMMON_COPYRIGHT_HEADER */
+
+#ifndef LXQTAUTOSTARTENTRY_H
+#define LXQTAUTOSTARTENTRY_H
+
+#include <qtxdg/xdgdesktopfile.h>
+
+namespace LxQt
+{
+
+/*! \brief The AutostartEntry class provides an interface for staging configuration of individual
+autostart items. All changes are made in memory until commit() is called.
+
+ - "system" file refers to a read-only file in /etc/xdg/autostart (or a directory in $XDG_CONFIG_DIRS)
+ - "local" file refers to the file in user's ~/.config/autostart (or in $XDG_CONFIG_HOME/autostart)
+
+When a "local" file has the same name as the "system" file, the local one overrides it. This class
+tries to ensure that the "local" file is deleted if it's identical to the "system" file.
+*/
+class AutostartEntry
+{
+public:
+    /*! Constructs an AutostartEntry object for a specific entry.
+     * \param name The name of the autostart desktop file (e.g. "razor-panel.desktop")
+     */
+    AutostartEntry(const QString& name);
+
+    //! \brief Default constructor
+    AutostartEntry();
+
+    //! Destructor
+    virtual ~AutostartEntry() { }
+
+    //! Returns the "active" desktop file
+    const XdgDesktopFile& file() const;
+
+    //! Returns the name of the autostart entry (e.g. "razor-panel.desktop")
+    QString name() const;
+
+    /*! Sets to the specified desktop file. Use this to make modifications.
+     * \param file The desktop file
+     */
+    void setFile(const XdgDesktopFile& file);
+
+    /*! Sets whether the item auto-starts
+     * \param enable When false, sets the "Hidden" key which will prevent the item from starting
+     */
+    void setEnabled(bool enable);
+
+    //! Returns true if the item will auto-start
+    bool isEnabled() const;
+
+    /*! Returns true if the entry does not exist, and the object carries no useful information
+     *  and can be ignored/deleted.
+     */
+    bool isEmpty() const { return !mSystem && mLocalState == StateNone; }
+
+    /*! Write any changes to disk
+     * \return true on success
+     */
+    bool commit();
+
+protected:
+    //! Returns true if the user's "local" version exists
+    bool isLocal() const { return mLocalState != StateNone && mLocalState != StateDeleted; }
+
+    /*! Removes the user's "local" version of the file, reverting to system defaults
+     * \return true if there is no "system" version left (i.e. the entry was entirely deleted)
+     */
+    bool removeLocal();
+
+    //! \brief a read-only file in /etc/xdg/autostart (or a directory in $XDG_CONFIG_DIRS)
+    XdgDesktopFile mSystemFile;
+
+    //! \brief the file in user's ~/.config/autostart (or in $XDG_CONFIG_HOME/autostart)
+    XdgDesktopFile mLocalFile;
+
+    //! State of the "local" file
+    enum ItemState
+    {
+        StateNone,      //! does not exist at all
+        StateDeleted,   //! needs to be deleted from disk
+        StateTransient, //! does not yet exist on disk
+        StateModified,  //! exists on disk and is modified
+        StateExists     //! exists on disk and unmodified
+    } mLocalState;
+    bool mSystem;       //! true if the "system" file exists
+};
+
+} // namespace LxQt
+#endif // LXQTAUTOSTARTENTRY_H
diff --git a/razorautostartentry.cpp b/razorautostartentry.cpp
deleted file mode 100644 (file)
index f61d60e..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/* BEGIN_COMMON_COPYRIGHT_HEADER
- * (c)LGPL2+
- *
- * Razor - a lightweight, Qt based, desktop toolset
- * http://razor-qt.org
- *
- * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
-
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * END_COMMON_COPYRIGHT_HEADER */
-
-#include "razorautostartentry.h"
-#include <qtxdg/xdgautostart.h>
-#include <qtxdg/xdgdirs.h>
-#include <QtCore/QFileInfo>
-
-RazorAutostartEntry::RazorAutostartEntry() :
-    mLocalState(StateNone), mSystem(false)
-{
-}
-
-RazorAutostartEntry::RazorAutostartEntry(const QString& name):
-    mLocalState(StateNone), mSystem(false)
-{
-    foreach (const QString& dir, XdgDirs::autostartDirs())
-    {
-        QString path = QString("%1/%2").arg(dir, name);
-        if (QFile(path).exists())
-        {
-            mSystemFile.load(path);
-            mSystem = true;
-            break;
-        }
-    }
-
-    QString path = QString("%1/%2").arg(XdgDirs::autostartHome(), name);
-    if (QFile(path).exists())
-    {
-        mLocalFile.load(path);
-        mLocalState = StateExists;
-    }
-}
-
-void RazorAutostartEntry::setFile(const XdgDesktopFile& file)
-{
-    bool local = isLocal();
-    if (mSystem && local && file == mSystemFile)
-    {
-        removeLocal();
-    }
-    else
-    {
-        if (local)
-            mLocalState = StateModified;
-        else
-            mLocalState = StateTransient;
-        mLocalFile = file;
-    }
-}
-
-bool RazorAutostartEntry::removeLocal()
-{
-    if (!isLocal())
-        return false;
-
-    if (mLocalState == StateTransient)
-        mLocalState = StateNone;
-    else
-        mLocalState = StateDeleted;
-
-    return !mSystem;
-}
-
-const XdgDesktopFile& RazorAutostartEntry::file() const
-{
-    return isLocal() ? mLocalFile : mSystemFile;
-}
-
-QString RazorAutostartEntry::name() const
-{
-    return QFileInfo(file().fileName()).fileName();
-}
-
-void RazorAutostartEntry::setEnabled(bool enable)
-{
-    XdgDesktopFile f = file();
-    if (enable)
-        f.removeEntry("Hidden");
-    else
-        f.setValue("Hidden", true);
-
-    setFile(f);
-}
-
-bool RazorAutostartEntry::isEnabled() const
-{
-    return !isEmpty() && !file().value("Hidden", false).toBool();
-}
-
-bool RazorAutostartEntry::commit()
-{
-    if (mLocalState == StateDeleted)
-    {
-        mLocalState = StateNone;
-        return QFile::remove(mLocalFile.fileName());
-    }
-    else if (mLocalState == StateModified || mLocalState == StateTransient)
-    {
-        mLocalState = StateExists;
-        return mLocalFile.save(XdgAutoStart::localPath(mLocalFile));
-    }
-    return true;
-}
diff --git a/razorautostartentry.h b/razorautostartentry.h
deleted file mode 100644 (file)
index 1e99764..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* BEGIN_COMMON_COPYRIGHT_HEADER
- * (c)LGPL2+
- *
- * Razor - a lightweight, Qt based, desktop toolset
- * http://razor-qt.org
- *
- * Copyright (C) 2012  Alec Moskvin <alecm@gmx.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
-
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
-
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * END_COMMON_COPYRIGHT_HEADER */
-
-#ifndef RAZORAUTOSTARTENTRY_H
-#define RAZORAUTOSTARTENTRY_H
-
-#include <qtxdg/xdgdesktopfile.h>
-
-/*! \brief The AutostartEntry class provides an interface for staging configuration of individual
-autostart items. All changes are made in memory until commit() is called.
-
- - "system" file refers to a read-only file in /etc/xdg/autostart (or a directory in $XDG_CONFIG_DIRS)
- - "local" file refers to the file in user's ~/.config/autostart (or in $XDG_CONFIG_HOME/autostart)
-
-When a "local" file has the same name as the "system" file, the local one overrides it. This class
-tries to ensure that the "local" file is deleted if it's identical to the "system" file.
-*/
-class RazorAutostartEntry
-{
-public:
-    /*! Constructs an AutostartEntry object for a specific entry.
-     * \param name The name of the autostart desktop file (e.g. "razor-panel.desktop")
-     */
-    RazorAutostartEntry(const QString& name);
-
-    //! \brief Default constructor
-    RazorAutostartEntry();
-
-    //! Destructor
-    virtual ~RazorAutostartEntry() { }
-
-    //! Returns the "active" desktop file
-    const XdgDesktopFile& file() const;
-
-    //! Returns the name of the autostart entry (e.g. "razor-panel.desktop")
-    QString name() const;
-
-    /*! Sets to the specified desktop file. Use this to make modifications.
-     * \param file The desktop file
-     */
-    void setFile(const XdgDesktopFile& file);
-
-    /*! Sets whether the item auto-starts
-     * \param enable When false, sets the "Hidden" key which will prevent the item from starting
-     */
-    void setEnabled(bool enable);
-
-    //! Returns true if the item will auto-start
-    bool isEnabled() const;
-
-    /*! Returns true if the entry does not exist, and the object carries no useful information
-     *  and can be ignored/deleted.
-     */
-    bool isEmpty() const { return !mSystem && mLocalState == StateNone; }
-
-    /*! Write any changes to disk
-     * \return true on success
-     */
-    bool commit();
-
-protected:
-    //! Returns true if the user's "local" version exists
-    bool isLocal() const { return mLocalState != StateNone && mLocalState != StateDeleted; }
-
-    /*! Removes the user's "local" version of the file, reverting to system defaults
-     * \return true if there is no "system" version left (i.e. the entry was entirely deleted)
-     */
-    bool removeLocal();
-
-    //! \brief a read-only file in /etc/xdg/autostart (or a directory in $XDG_CONFIG_DIRS)
-    XdgDesktopFile mSystemFile;
-
-    //! \brief the file in user's ~/.config/autostart (or in $XDG_CONFIG_HOME/autostart)
-    XdgDesktopFile mLocalFile;
-
-    //! State of the "local" file
-    enum ItemState
-    {
-        StateNone,      //! does not exist at all
-        StateDeleted,   //! needs to be deleted from disk
-        StateTransient, //! does not yet exist on disk
-        StateModified,  //! exists on disk and is modified
-        StateExists     //! exists on disk and unmodified
-    } mLocalState;
-    bool mSystem;       //! true if the "system" file exists
-};
-
-#endif // RAZORAUTOSTARTENTRY_H