quassel no longer allocates an MessageItem on the heap for every message - working...
[quassel.git] / src / common / util.h
index c7e89da..28639ba 100644 (file)
@@ -50,10 +50,41 @@ QString decodeString(const QByteArray &input, QTextCodec *codec = 0);
 
 uint editingDistance(const QString &s1, const QString &s2);
 
-QByteArray methodName(const QMetaMethod &method);
-
 QDir quasselDir();
 
+//! Returns a list of data directory paths
+/** There are several locations for applications to install their data files in. On Unix,
+ *  a common location is /usr/share; others include $PREFIX/share and additional directories
+ *  specified in the env variable XDG_DATA_DIRS.
+ *  \return A list of directory paths to look for data files in
+ */
+QStringList dataDirPaths();
+
+//! Searches for a data file in the possible data directories
+/** Data files can reside in $DATA_DIR/apps/quassel, where $DATA_DIR is one of the directories
+ *  returned by \sa dataDirPaths().
+ *  \return The full path to the data file if found; a null QString else
+ */
+QString findDataFilePath(const QString &fileName);
+
 void loadTranslation(const QLocale &locale);
 
+template<typename T>
+QVariantList toVariantList(const QList<T> &list) {
+  QVariantList variants;
+  for(int i = 0; i < list.count(); i++) {
+    variants << QVariant::fromValue<T>(list[i]);
+  }
+  return variants;
+}
+
+template<typename T>
+QList<T> fromVariantList(const QVariantList &variants) {
+  QList<T> list;
+  for(int i = 0; i < variants.count(); i++) {
+    list << variants[i].value<T>();
+  }
+  return list;
+}
+
 #endif