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 =3D QStringList() << "resource" << "folder" << = "mail" << "event"; + bool isValidStoreType(const QString &type) { - static const QSet types =3D QSet() << "folder" << "m= ail" << "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 =3D 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 QSt= ring &fragment, State &state) +{ + static QStringList types =3D QStringList() << "resource" << "folder" <= < "mail" << "event"; + if (commands.count() =3D=3D 1) { + return filtered(s_types, fragment); + } + + return filtered(resourceIds(state), fragment); +} + +QStringList typeCompleter(const QStringList &commands, const QString &frag= ment, State &state) +{ + return filtered(s_types, fragment); +} + QMap keyValueMapFromArgs(const QStringList &args) { //TODO: this is not the most clever of algorithms. preserved during th= e 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 loadModel(const QString &type, Akonadi2= ::Query query); QStringList resourceIds(); QStringList resourceCompleter(const QStringList &, const QString &fragment= , State &state); +QStringList resourceOrTypeCompleter(const QStringList &commands, const QSt= ring &fragment, State &state); +QStringList typeCompleter(const QStringList &commands, const QString &frag= ment, State &state); QMap 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 gi= ven type in a resource. Usage: count "), &AkonadiCount::co= unt, Syntax::EventDriven); - count.completer =3D &AkonadishUtils::resourceCompleter; + count.completer =3D &AkonadishUtils::typeCompleter; = return Syntax::List() << count; } diff --git a/akonadish/syntax_modules/akonadi_list.cpp b/akonadish/syntax_m= odules/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 conte= nts of one or more resources"), &AkonadiList::list, Syntax::EventDriven); - - return syntax; + Syntax list("list", QObject::tr("List all resources, or the contents o= f one or more resources"), &AkonadiList::list, Syntax::EventDriven); + list.completer =3D &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"), &Ak= onadiModify::modify); Syntax resource("resource", QObject::tr("Modify a resource"), &Akonadi= Modify::resource);//, Syntax::EventDriven); - resource.completer =3D &AkonadishUtils::resourceCompleter; + resource.completer =3D &AkonadishUtils::resourceOrTypeCompleter; modify.children << resource; = return Syntax::List() << modify;