[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [akonadi-next/develop] akonadish: typeCompleter and resourceOrTypeCompleter
From:       Aaron Seigo <aseigo () kde ! org>
Date:       2015-12-28 21:05:10
Message-ID: E1aDeyc-0004Yd-Jf () scm ! kde ! org
[Download RAW message or body]

Git commit cc5363fe4b0cd4ea95ac98d9d37f2028fe226145 by Aaron Seigo.
Committed on 28/12/2015 at 21:00.
Pushed by aseigo into branch 'develop'.

typeCompleter and resourceOrTypeCompleter

M  +28   -8    akonadish/akonadish_utils.cpp
M  +2    -0    akonadish/akonadish_utils.h
M  +1    -1    akonadish/syntax_modules/akonadi_count.cpp
M  +3    -4    akonadish/syntax_modules/akonadi_list.cpp
M  +1    -1    akonadish/syntax_modules/akonadi_modify.cpp

http://commits.kde.org/akonadi-next/cc5363fe4b0cd4ea95ac98d9d37f2028fe226145

diff --git a/akonadish/akonadish_utils.cpp b/akonadish/akonadish_utils.cpp
index 90847f6..070d788 100644
--- a/akonadish/akonadish_utils.cpp
+++ b/akonadish/akonadish_utils.cpp
@@ -25,10 +25,11 @@
 namespace AkonadishUtils
 {
 
+static QStringList s_types = QStringList() << "resource" << "folder" << "mail" << \
"event"; +
 bool isValidStoreType(const QString &type)
 {
-    static const QSet<QString> types = QSet<QString>() << "folder" << "mail" << \
                "event" << "resource";
-    return types.contains(type);
+    return s_types.contains(type);
 }
 
 StoreBase &getStore(const QString &type)
@@ -97,23 +98,42 @@ QStringList resourceIds(State &state)
     return resources;
 }
 
-QStringList resourceCompleter(const QStringList &commands, const QString &fragment, \
State &state) +QStringList filtered(const QStringList &list, const QString &fragment)
 {
-    QStringList resources = resourceIds(state);
     if (fragment.isEmpty()) {
-        return resources;
+        return list;
     }
 
     QStringList filtered;
-    for (auto resource: resources) {
-        if (resource.startsWith(fragment)) {
-            filtered << resource;
+    for (auto item: list) {
+        if (item.startsWith(fragment)) {
+            filtered << item;
         }
     }
 
     return filtered;
 }
 
+QStringList resourceCompleter(const QStringList &, const QString &fragment, State \
&state) +{
+    return filtered(resourceIds(state), fragment);
+}
+
+QStringList resourceOrTypeCompleter(const QStringList &commands, const QString \
&fragment, State &state) +{
+    static QStringList types = QStringList() << "resource" << "folder" << "mail" << \
"event"; +    if (commands.count() == 1) {
+        return filtered(s_types, fragment);
+    }
+
+    return filtered(resourceIds(state), fragment);
+}
+
+QStringList typeCompleter(const QStringList &commands, const QString &fragment, \
State &state) +{
+    return filtered(s_types, fragment);
+}
+
 QMap<QString, QString> keyValueMapFromArgs(const QStringList &args)
 {
     //TODO: this is not the most clever of algorithms. preserved during the port of \
                commands
diff --git a/akonadish/akonadish_utils.h b/akonadish/akonadish_utils.h
index 5671157..5dd24f1 100644
--- a/akonadish/akonadish_utils.h
+++ b/akonadish/akonadish_utils.h
@@ -38,6 +38,8 @@ StoreBase &getStore(const QString &type);
 QSharedPointer<QAbstractItemModel> loadModel(const QString &type, Akonadi2::Query \
query);  QStringList resourceIds();
 QStringList resourceCompleter(const QStringList &, const QString &fragment, State \
&state); +QStringList resourceOrTypeCompleter(const QStringList &commands, const \
QString &fragment, State &state); +QStringList typeCompleter(const QStringList \
&commands, const QString &fragment, State &state);  QMap<QString, QString> \
keyValueMapFromArgs(const QStringList &args);  
 /**
diff --git a/akonadish/syntax_modules/akonadi_count.cpp \
b/akonadish/syntax_modules/akonadi_count.cpp index fa3f1fb..5acdcdd 100644
--- a/akonadish/syntax_modules/akonadi_count.cpp
+++ b/akonadish/syntax_modules/akonadi_count.cpp
@@ -75,7 +75,7 @@ bool count(const QStringList &args, State &state)
 Syntax::List syntax()
 {
     Syntax count("count", QObject::tr("Returns the number of items of a given type \
in a resource. Usage: count <type> <resource>"), &AkonadiCount::count, \
                Syntax::EventDriven);
-    count.completer = &AkonadishUtils::resourceCompleter;
+    count.completer = &AkonadishUtils::typeCompleter;
 
     return Syntax::List() << count;
 }
diff --git a/akonadish/syntax_modules/akonadi_list.cpp \
b/akonadish/syntax_modules/akonadi_list.cpp index 18f15e7..82f13b5 100644
--- a/akonadish/syntax_modules/akonadi_list.cpp
+++ b/akonadish/syntax_modules/akonadi_list.cpp
@@ -106,10 +106,9 @@ bool list(const QStringList &args, State &state)
 
 Syntax::List syntax()
 {
-    Syntax::List syntax;
-    syntax << Syntax("list", QObject::tr("List all resources, or the contents of one \
                or more resources"), &AkonadiList::list, Syntax::EventDriven);
-
-    return syntax;
+    Syntax list("list", QObject::tr("List all resources, or the contents of one or \
more resources"), &AkonadiList::list, Syntax::EventDriven); +    list.completer = \
&AkonadishUtils::resourceOrTypeCompleter; +    return Syntax::List() << list;
 }
 
 REGISTER_SYNTAX(AkonadiList)
diff --git a/akonadish/syntax_modules/akonadi_modify.cpp \
b/akonadish/syntax_modules/akonadi_modify.cpp index 8ab873a..76a7f5e 100644
--- a/akonadish/syntax_modules/akonadi_modify.cpp
+++ b/akonadish/syntax_modules/akonadi_modify.cpp
@@ -109,7 +109,7 @@ Syntax::List syntax()
 {
     Syntax modify("modify", QObject::tr("Modify items in a resource"), \
                &AkonadiModify::modify);
     Syntax resource("resource", QObject::tr("Modify a resource"), \
                &AkonadiModify::resource);//, Syntax::EventDriven);
-    resource.completer = &AkonadishUtils::resourceCompleter;
+    resource.completer = &AkonadishUtils::resourceOrTypeCompleter;
     modify.children << resource;
 
     return Syntax::List() << modify;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic