Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Geyer <debfx@fobos.de>2011-12-23 14:59:09 +0400
committerFelix Geyer <debfx@fobos.de>2011-12-23 14:59:09 +0400
commit1e4587c7a32e45cce6e5364bde06dc84547ff489 (patch)
tree6e2f7831af0ed6592388c09c06d746fd99da4bbe /src
parentaf820f49312db11c26490f14273bbc2b9040d1e6 (diff)
Add a class which provides the path to data files.
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/core/DataPath.cpp76
-rw-r--r--src/core/DataPath.h36
-rw-r--r--src/core/DatabaseIcons.cpp6
4 files changed, 116 insertions, 3 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4f8e41b29..1ff8c8793 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -20,6 +20,7 @@ configure_file( config-keepassx.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-keepa
set(keepassx_SOURCES
core/Database.cpp
core/DatabaseIcons.cpp
+ core/DataPath.cpp
core/Endian.cpp
core/Entry.cpp
core/Group.cpp
diff --git a/src/core/DataPath.cpp b/src/core/DataPath.cpp
new file mode 100644
index 000000000..be7a41c5f
--- /dev/null
+++ b/src/core/DataPath.cpp
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "DataPath.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDir>
+
+#include "config-keepassx.h"
+
+DataPath* DataPath::m_instance(0);
+
+QString DataPath::getPath(const QString& name)
+{
+ if (!m_instance) {
+ m_instance = new DataPath();
+ }
+
+ return m_instance->m_basePath + name;
+}
+
+DataPath::DataPath()
+{
+ if (false) {
+ }
+#ifdef QT_DEBUG
+ else if (testSetDir(QString(KEEPASSX_SOURCE_DIR) + "/share")) {
+ }
+#endif
+#ifdef Q_WS_X11
+ else if (testSetDir(QCoreApplication::applicationDirPath() + "/../share/keepassx")) {
+ }
+#endif
+#ifdef Q_WS_MAC
+ else if (testSetDir(QCoreApplication::applicationDirPath() + "/../Resources/keepassx") {
+ }
+#endif
+#ifdef Q_WS_WIN
+ else if (testSetDir(QCoreApplication::applicationDirPath() + "/share") {
+ }
+#endif
+
+ if (m_basePath.isEmpty()) {
+ qWarning("DataPath::DataPath: can't find data dir");
+ }
+ else {
+ m_basePath = QDir::cleanPath(m_basePath) + "/";
+ }
+
+ qDebug("%s", m_basePath.toAscii().constData());
+}
+
+bool DataPath::testSetDir(const QString& dir)
+{
+ if (QFile::exists(dir + "/icons/database/C00_Password.png")) {
+ m_basePath = dir;
+ return true;
+ }
+ else {
+ return false;
+ }
+}
diff --git a/src/core/DataPath.h b/src/core/DataPath.h
new file mode 100644
index 000000000..7d1056065
--- /dev/null
+++ b/src/core/DataPath.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2011 Felix Geyer <debfx@fobos.de>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 or (at your option)
+ * version 3 of the License.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_DATAPATH_H
+#define KEEPASSX_DATAPATH_H
+
+#include <QtCore/QString>
+
+class DataPath
+{
+public:
+ static QString getPath(const QString& name);
+
+private:
+ DataPath();
+ bool testSetDir(const QString& dir);
+
+ static DataPath* m_instance;
+ QString m_basePath;
+};
+
+#endif // KEEPASSX_DATAPATH_H
diff --git a/src/core/DatabaseIcons.cpp b/src/core/DatabaseIcons.cpp
index 3bdb37de6..6e5c942f0 100644
--- a/src/core/DatabaseIcons.cpp
+++ b/src/core/DatabaseIcons.cpp
@@ -17,7 +17,7 @@
#include "DatabaseIcons.h"
-#include "config-keepassx.h"
+#include "core/DataPath.h"
DatabaseIcons* DatabaseIcons::m_instance(0);
@@ -121,8 +121,8 @@ QIcon DatabaseIcons::getIconInternal(int index)
return m_iconCache.value(index);
}
else {
- // TODO search multiple paths
- QIcon icon(QString(KEEPASSX_SOURCE_DIR).append("/share/icons/database/").append(m_indexToName.at(index)));
+ QString iconPath = QString("icons/database/").append(m_indexToName.at(index));
+ QIcon icon(DataPath::getPath(iconPath));
m_iconCache.insert(index, icon);
return icon;