diff --git a/libqrtm.pro b/libqrtm.pro index 3a13c6b..44cb7bd 100644 --- a/libqrtm.pro +++ b/libqrtm.pro @@ -10,12 +10,22 @@ PKGCONFIG += QJson SOURCES += src/request.cpp \ src/authentication.cpp \ - src/service.cpp + src/service.cpp \ + src/listsmodel.cpp \ + src/tasksmodel.cpp \ + src/list.cpp \ + src/task.cpp \ + src/filteredtasksmodel.cpp HEADERS += src/libqrtm_global.h \ src/request.h \ src/rtm.h \ src/authentication.h \ - src/service.h + src/service.h \ + src/listsmodel.h \ + src/tasksmodel.h \ + src/list.h \ + src/task.h \ + src/filteredtasksmodel.h OTHER_FILES += qtc_packaging/debian_harmattan/rules \ qtc_packaging/debian_harmattan/README \ qtc_packaging/debian_harmattan/manifest.aegis \ @@ -30,7 +40,10 @@ win32 { OBJECTS_DIR = .\build\objects } unix { -target.path = /usr/local/lib +isEmpty(PREFIX) { + PREFIX = /usr/local +} +target.path = $${PREFIX}/lib QMAKE_PKGCONFIG_NAME = qrtm QMAKE_PKGCONFIG_DESCRIPTION = Qt Remember The Milk library @@ -38,13 +51,8 @@ QMAKE_PKGCONFIG_LIBDIR = $$target.path QMAKE_PKGCONFIG_INCDIR = $$target.path QMAKE_PKGCONFIG_DESTDIR = pkgconfig -headers.path = /usr/local/include/qrtm -headers.files = src/libqrtm_global.h \ - src/loginview.h \ - src/request.h \ - src/rtm.h \ - src/authentication.h \ - src/service.h +headers.path = $${PREFIX}/include/qrtm +headers.files = $$HEADERS } diff --git a/src/service.cpp b/src/service.cpp index 15f5cf2..c9a7b40 100644 --- a/src/service.cpp +++ b/src/service.cpp @@ -18,68 +18,184 @@ #include "service.h" #include "authentication.h" +#include "listsmodel.h" +#include "tasksmodel.h" +#include "filteredtasksmodel.h" + +#include using namespace RTM; +class Service::Private +{ +public: + Private(Service *service) + { + authentication = 0; + tasksModel = new TasksModel; + tasksModelFilter = new FilteredTasksModel; + tasksModelFilter->setSourceModel(tasksModel); + listsModel = new ListsModel(service); + + connect(service, SIGNAL(listsGetListFinished(QVariantMap,ResponseStatus)), + listsModel, SLOT(onGetListFinished(QVariantMap,ResponseStatus))); + } + + Authentication * authentication; + QString apiKey; + QString sharedSecret; + QString token; + + ListsModel *listsModel; + TasksModel *tasksModel; + FilteredTasksModel *tasksModelFilter; +}; + +Service::Service(QObject *parent) : + QObject(parent), d(new Private(this)) +{ +} + Service::Service(QString key, QString secret, QObject *parent) : - QObject(parent), authentication(0), apiKey(key), sharedSecret(secret) + QObject(parent), d(new Private(this)) { - authentication = new Authentication(key, secret, Read, "", this); - connect(authentication, SIGNAL(authFinished(QVariantMap)), this, SIGNAL(authenticationSuccessful(QVariantMap))); - connect(authentication, SIGNAL(authError(QVariantMap,ResponseStatus)), this, SIGNAL(authenticationFailed(QVariantMap,ResponseStatus))); - connect(authentication, SIGNAL(loadAuthUrl(QUrl)), this, SIGNAL(authenticationLoadUrl(QUrl))); + d->apiKey = key; + d->sharedSecret = secret; + d->authentication = new Authentication(key, secret, Read, "", this); + connect(d->authentication, SIGNAL(authFinished(QVariantMap)), + this, SLOT(onAuthFinished())); + connect(d->authentication, SIGNAL(authError(QVariantMap,ResponseStatus)), + this, SLOT(onAuthError())); + connect(d->authentication, SIGNAL(loadAuthUrl(QUrl)), + this, SIGNAL(authenticationLoadUrl(QUrl))); } Service::~Service() { - delete authentication; + delete d->authentication; + d->authentication = 0; + + delete d->listsModel; + d->listsModel = 0; } -void Service::setToken(QString tok) +void Service::setKey(QString key, QString secret) { - token = tok; + d->apiKey = key; + d->sharedSecret = secret; + + if (d->authentication) + delete d->authentication; + d->authentication = new Authentication(key, secret, Read, "", this); + connect(d->authentication, SIGNAL(authFinished(QVariantMap)), + this, SLOT(onAuthFinished())); + connect(d->authentication, SIGNAL(authError(QVariantMap,ResponseStatus)), + this, SLOT(onAuthError())); + connect(d->authentication, SIGNAL(loadAuthUrl(QUrl)), + this, SIGNAL(authenticationLoadUrl(QUrl))); } Permission Service::getPermission() { - return authentication->getPermission(); + return d->authentication->getPermission(); +} + +ListsModel *Service::getListsModel() +{ + return d->listsModel; +} + +FilteredTasksModel *Service::getTasksModel() +{ + return d->tasksModelFilter; +} + +void Service::setListId(QString id) +{ + // Get the list parameters from from the listsModel. + const List &list = d->listsModel->listFromId(id); + + // Give the list parameters to the filtered model + d->tasksModelFilter->setListParameters(id, list.sortOrder(), list.filter()); } void Service::authenticate(Permission p) { - authentication->setPermission(p); - authentication->beginAuth(); + d->authentication->setPermission(p); + d->authentication->beginAuth(); +} + +void Service::onAuthFinished() +{ + d->token = d->authentication->getToken(); + emit authenticationDone(true); +} + +void Service::onAuthError() +{ + d->listsModel->clear(); + d->tasksModel->clear(); + emit authenticationDone(false); } void Service::authRequestToken() { - authentication->requestToken(); + qDebug() << "Requesting authorized token"; + d->authentication->requestToken(); +} + +QString Service::getToken() const +{ + return d->token; } void Service::authCheckToken(QString tok) { - Request * request = new Request(sharedSecret, baseMethodUrl, Unsigned, this); - connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(authCheckTokenFinished(QVariantMap, ResponseStatus))); - request->addArgument("api_key", apiKey); + d->token = tok; // Store the token we are checking. + Request * request = new Request(d->sharedSecret, baseMethodUrl, Unsigned, this); + connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SLOT(onCheckTokenFinished(QVariantMap, ResponseStatus))); + request->addArgument("api_key", d->apiKey); request->addArgument("auth_token", tok); request->addArgument("method", AUTH_CHECK_TOKEN); request->sendRequest(); } -void Service::authGetToken() +void Service::onCheckTokenFinished(QVariantMap response, ResponseStatus status) { - if(authentication->getToken().isEmpty()) - emit authGetTokenFinished("", Fail); + if (status == RTM::OK) + { + // use the token checked. + emit authenticationDone(true); + } else - emit authGetTokenFinished(authentication->getToken(), OK); + { + // It was no good, so clear it. + d->token = QString(); + emit authenticationDone(false); + } +} + +void Service::onTasksGetListFinished(QVariantMap response, ResponseStatus status) +{ + if (status == RTM::OK) + { + qDebug() << "Got tasks list, adding tasks to models"; + QList tasks = GenerateTaskList(response); + + Q_FOREACH(const Task &task, tasks) + { + QString id = task.listId(); + d->tasksModel->addTask(task); + } + } } void Service::contactsAdd(QString timeline, QString contact) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(contactsAddFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", CONTACTS_ADD); request->addArgument("timeline", timeline); request->addArgument("contact", contact); @@ -88,10 +204,10 @@ void Service::contactsAdd(QString timeline, QString contact) void Service::contactsDelete(QString timeline, QString contactID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(contactsDeleteFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", CONTACTS_DELETE); request->addArgument("timeline", timeline); request->addArgument("contact_id", contactID); @@ -100,20 +216,20 @@ void Service::contactsDelete(QString timeline, QString contactID) void Service::contactsGetList() { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(contactsGetListFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", CONTACTS_GET_LIST); request->sendRequest(); } void Service::groupsAdd(QString timeline, QString groupName) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(groupsAddFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", GROUPS_ADD); request->addArgument("timeline", timeline); request->addArgument("group", groupName); @@ -122,10 +238,10 @@ void Service::groupsAdd(QString timeline, QString groupName) void Service::groupsAddContact(QString timeline, QString groupID, QString contactID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(groupsAddContactFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", GROUPS_ADD_CONTACT); request->addArgument("timeline", timeline); request->addArgument("group_id", groupID); @@ -135,10 +251,10 @@ void Service::groupsAddContact(QString timeline, QString groupID, QString contac void Service::groupsDelete(QString timeline, QString groupID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(groupsDeleteFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", GROUPS_DELETE); request->addArgument("timeline", timeline); request->addArgument("group_id", groupID); @@ -147,20 +263,20 @@ void Service::groupsDelete(QString timeline, QString groupID) void Service::groupsGetList() { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(groupsGetListFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", GROUPS_GET_LIST); request->sendRequest(); } void Service::groupsRemoveContact(QString timeline, QString groupID, QString contactID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(groupsRemoveContactFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", GROUPS_REMOVE_CONTACT); request->addArgument("timeline", timeline); request->addArgument("group_id", groupID); @@ -170,10 +286,10 @@ void Service::groupsRemoveContact(QString timeline, QString groupID, QString con void Service::listsAdd(QString timeline, QString listName, QString filter) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(listsAddFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", LISTS_ADD); request->addArgument("timeline", timeline); request->addArgument("name", listName); @@ -184,10 +300,10 @@ void Service::listsAdd(QString timeline, QString listName, QString filter) void Service::listsArchive(QString timeline, QString listID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(listsArchiveFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", LISTS_ARCHIVE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -196,10 +312,10 @@ void Service::listsArchive(QString timeline, QString listID) void Service::listsDelete(QString timeline, QString listID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(listsDeleteFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", LISTS_DELETE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -208,20 +324,20 @@ void Service::listsDelete(QString timeline, QString listID) void Service::listsGetList() { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap, ResponseStatus)), this, SIGNAL(listsGetListFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", LISTS_GET_LIST); request->sendRequest(); } void Service::listsSetDefaultList(QString timeline, QString listID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(listsSetDefaultListFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", LISTS_SET_DEFAULT_LIST); request->addArgument("timeline", timeline); if(!listID.isEmpty()) @@ -231,10 +347,10 @@ void Service::listsSetDefaultList(QString timeline, QString listID) void Service::listsSetName(QString timeline, QString listID, QString listName) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(listsSetNameFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", LISTS_SET_NAME); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -244,10 +360,10 @@ void Service::listsSetName(QString timeline, QString listID, QString listName) void Service::listsUnarchive(QString timeline, QString listID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(listsUnarchiveFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", LISTS_UNARCHIVE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -256,30 +372,30 @@ void Service::listsUnarchive(QString timeline, QString listID) void Service::locationsGetList() { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(locationsGetListFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", LOCATIONS_GET_LIST); request->sendRequest(); } void Service::settingsGetList() { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(settingsGetListFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", SETTINGS_GET_LIST); request->sendRequest(); } void Service::tasksAdd(QString timeline, QString taskName, QString listID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksAddFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_ADD); request->addArgument("timeline", timeline); request->addArgument("name", taskName); @@ -291,10 +407,10 @@ void Service::tasksAdd(QString timeline, QString taskName, QString listID) void Service::tasksSmartAdd(QString timeline, QString taskName, QString listID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksAddFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_ADD); request->addArgument("timeline", timeline); request->addArgument("name", taskName); @@ -306,10 +422,10 @@ void Service::tasksSmartAdd(QString timeline, QString taskName, QString listID) void Service::tasksAddTags(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString tags) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksAddTagsFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_ADD_TAGS); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -321,10 +437,10 @@ void Service::tasksAddTags(QString timeline, QString listID, QString taskSeriesI void Service::tasksComplete(QString timeline, QString listID, QString taskSeriesID, QString taskID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksCompleteFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_COMPLETE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -335,10 +451,10 @@ void Service::tasksComplete(QString timeline, QString listID, QString taskSeries void Service::tasksDelete(QString timeline, QString listID, QString taskSeriesID, QString taskID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksDeleteFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_DELETE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -349,23 +465,25 @@ void Service::tasksDelete(QString timeline, QString listID, QString taskSeriesID void Service::tasksGetList() { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); - connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksGetListFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); +// connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksGetListFinished(QVariantMap,ResponseStatus))); + connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), + this, SLOT(onTasksGetListFinished(QVariantMap, ResponseStatus))); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_GET_LIST); request->sendRequest(); } void Service::tasksGetList(QMap args) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksGetListFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_GET_LIST); if(args.contains("list_id")) - request->addArgument("list_id", args.value("list_id")); + request->addArgument("list_id", args.value("list_id")); if(args.contains("filter")) request->addArgument("filter", args.value("filter")); if(args.contains("last_sync")) @@ -375,10 +493,10 @@ void Service::tasksGetList(QMap args) void Service::tasksMovePriority(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString direction) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksMovePriorityFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_MOVE_PRIORITY); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -390,10 +508,10 @@ void Service::tasksMovePriority(QString timeline, QString listID, QString taskSe void Service::tasksMoveTo(QString timeline, QString fromListID, QString toListID, QString taskSeriesID, QString taskID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksMoveToFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_MOVE_TO); request->addArgument("timeline", timeline); request->addArgument("from_list_id", fromListID); @@ -405,10 +523,10 @@ void Service::tasksMoveTo(QString timeline, QString fromListID, QString toListID void Service::tasksPostpone(QString timeline, QString listID, QString taskSeriesID, QString taskID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksPostponeFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_POSTPONE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -419,10 +537,10 @@ void Service::tasksPostpone(QString timeline, QString listID, QString taskSeries void Service::tasksRemoveTags(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString tags) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksRemoveTagsFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_REMOVE_TAGS); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -434,10 +552,10 @@ void Service::tasksRemoveTags(QString timeline, QString listID, QString taskSeri void Service::tasksSetDueDate(QString timeline, QString listID, QString taskSeriesID, QString taskID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksSetDueDateFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_SET_DUE_DATE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -448,10 +566,10 @@ void Service::tasksSetDueDate(QString timeline, QString listID, QString taskSeri void Service::tasksSetDueDate(QString timeline, QString listID, QString taskSeriesID, QString taskID, QMapoptArgs) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksSetDueDateFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_SET_DUE_DATE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -468,10 +586,10 @@ void Service::tasksSetDueDate(QString timeline, QString listID, QString taskSeri void Service::tasksSetEstimate(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString estimate) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksSetEstimateFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_SET_ESTIMATE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -484,10 +602,10 @@ void Service::tasksSetEstimate(QString timeline, QString listID, QString taskSer void Service::tasksSetLocation(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString locationID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksSetLocationFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_SET_LOCATION); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -500,10 +618,10 @@ void Service::tasksSetLocation(QString timeline, QString listID, QString taskSer void Service::tasksSetName(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString taskName) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksSetNameFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_SET_NAME); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -515,10 +633,10 @@ void Service::tasksSetName(QString timeline, QString listID, QString taskSeriesI void Service::tasksSetPriority(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString priority) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksSetPriorityFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_SET_PRIORITY); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -531,10 +649,10 @@ void Service::tasksSetPriority(QString timeline, QString listID, QString taskSer void Service::tasksSetRecurrence(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString repeat) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksSetRecurrenceFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_SET_RECURRENCE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -547,10 +665,10 @@ void Service::tasksSetRecurrence(QString timeline, QString listID, QString taskS void Service::tasksSetTags(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString tags) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksSetTagsFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_SET_TAGS); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -563,10 +681,10 @@ void Service::tasksSetTags(QString timeline, QString listID, QString taskSeriesI void Service::tasksSetUrl(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString url) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksSetUrlFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_SET_URL); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -579,10 +697,10 @@ void Service::tasksSetUrl(QString timeline, QString listID, QString taskSeriesID void Service::tasksUncomplete(QString timeline, QString listID, QString taskSeriesID, QString taskID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksUncompleteFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_UNCOMPLETE); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -593,10 +711,10 @@ void Service::tasksUncomplete(QString timeline, QString listID, QString taskSeri void Service::tasksNotesAdd(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString noteTitle, QString noteText) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksNotesAddFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_NOTES_ADD); request->addArgument("timeline", timeline); request->addArgument("list_id", listID); @@ -609,10 +727,10 @@ void Service::tasksNotesAdd(QString timeline, QString listID, QString taskSeries void Service::tasksNotesDelete(QString timeline, QString noteID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksNotesDeleteFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_NOTES_DELETE); request->addArgument("timeline", timeline); request->addArgument("note_id", noteID); @@ -621,10 +739,10 @@ void Service::tasksNotesDelete(QString timeline, QString noteID) void Service::tasksNotesEdit(QString timeline, QString noteID, QString noteTitle, QString noteText) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(tasksNotesEditFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TASKS_NOTES_EDIT); request->addArgument("timeline", timeline); request->addArgument("note_id", noteID); @@ -635,10 +753,10 @@ void Service::tasksNotesEdit(QString timeline, QString noteID, QString noteTitle void Service::timeConvert(QString toTimezone) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(timeConvertFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TIME_CONVERT); request->addArgument("to_timezone", toTimezone); request->sendRequest(); @@ -646,10 +764,10 @@ void Service::timeConvert(QString toTimezone) void Service::timeConvert(QString toTimezone, QMap optArgs) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(timeConvertFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TIME_CONVERT); request->addArgument("to_timezone", toTimezone); if(optArgs.contains("from_timezone")) @@ -661,10 +779,10 @@ void Service::timeConvert(QString toTimezone, QMap optArgs) void Service::timeParse(QString text) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(timeParseFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TIME_PARSE); request->addArgument("text", text); request->sendRequest(); @@ -672,10 +790,10 @@ void Service::timeParse(QString text) void Service::timeParse(QString text, QMap optArgs) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(timeParseFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TIME_PARSE); request->addArgument("text", text); if(optArgs.contains("timezone")) @@ -687,29 +805,29 @@ void Service::timeParse(QString text, QMap optArgs) void Service::timelinesCreate() { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(timelinesCreateFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TIMELINES_CREATE); request->sendRequest(); } void Service::timezonesGetList() { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(timezonesGetListFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); + request->addArgument("api_key", d->apiKey); request->addArgument("method", TIMEZONES_GET_LIST); request->sendRequest(); } void Service::transactionsUndo(QString timeline, QString transactionID) { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(transactionsUndoFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TRANSACTIONS_UNDO); request->addArgument("timeline", timeline); request->addArgument("transaction_id", transactionID); @@ -718,10 +836,10 @@ void Service::transactionsUndo(QString timeline, QString transactionID) void Service::testLogin() { - Request * request = new Request(sharedSecret, baseMethodUrl, Signed, this); + Request * request = new Request(d->sharedSecret, baseMethodUrl, Signed, this); connect(request, SIGNAL(requestFinished(QVariantMap,ResponseStatus)), this, SIGNAL(testLoginFinished(QVariantMap,ResponseStatus))); - request->addArgument("api_key", apiKey); - request->addArgument("auth_token", token); + request->addArgument("api_key", d->apiKey); + request->addArgument("auth_token", d->token); request->addArgument("method", TEST_LOGIN); request->sendRequest(); } diff --git a/src/service.h b/src/service.h index b2139f3..e75af71 100644 --- a/src/service.h +++ b/src/service.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2010 Sertac Olgunsoylu + * Copyright (C) 2012 Jeremy Whiting * * 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 @@ -28,32 +29,49 @@ namespace RTM { class Authentication; + class ListsModel; + class FilteredTasksModel; class RTMAPISHARED_EXPORT Service : public QObject { Q_OBJECT + Q_PROPERTY(RTM::ListsModel * listsModel READ getListsModel) + Q_PROPERTY(RTM::FilteredTasksModel * tasksModel READ getTasksModel) public: + Service(QObject *parent = 0); Service(QString key, QString secret, QObject *parent = 0); ~Service(); - void setToken(QString tok); + + void setKey(QString key, QString secret); + + // Get the authenticated token. + // Returns empty QString if not authenticated. + QString getToken() const; + Permission getPermission(); - protected: + + Q_INVOKABLE ListsModel *getListsModel(); + Q_INVOKABLE FilteredTasksModel *getTasksModel(); + + Q_INVOKABLE void setListId(QString id); signals: + // Signal the ui should load the given url in order to authenticate. void authenticationLoadUrl(const QUrl &url); - void authenticationSuccessful(QVariantMap response); - void authenticationFailed(QVariantMap response, ResponseStatus status); - void authCheckTokenFinished(QVariantMap response, ResponseStatus status); - void authGetTokenFinished(QString token, ResponseStatus status); + // Signal authentication is done. + void authenticationDone(bool success); + void contactsAddFinished(QVariantMap response, ResponseStatus status); void contactsDeleteFinished(QVariantMap response, ResponseStatus status); void contactsGetListFinished(QVariantMap response, ResponseStatus status); + void groupsAddFinished(QVariantMap response, ResponseStatus status); void groupsAddContactFinished(QVariantMap response, ResponseStatus status); void groupsDeleteFinished(QVariantMap response, ResponseStatus status); void groupsGetListFinished(QVariantMap response, ResponseStatus status); void groupsRemoveContactFinished(QVariantMap response, ResponseStatus status); + void listsAddFinished(QVariantMap response, ResponseStatus status); void listsArchiveFinished(QVariantMap response, ResponseStatus status); void listsDeleteFinished(QVariantMap response, ResponseStatus status); @@ -61,8 +79,11 @@ namespace RTM { void listsSetDefaultListFinished(QVariantMap response, ResponseStatus status); void listsSetNameFinished(QVariantMap response, ResponseStatus status); void listsUnarchiveFinished(QVariantMap response, ResponseStatus status); + void locationsGetListFinished(QVariantMap response, ResponseStatus status); + void settingsGetListFinished(QVariantMap response, ResponseStatus status); + void tasksAddFinished(QVariantMap response, ResponseStatus status); void tasksAddTagsFinished(QVariantMap response, ResponseStatus status); void tasksCompleteFinished(QVariantMap response, ResponseStatus status); @@ -84,26 +105,37 @@ namespace RTM { void tasksNotesAddFinished(QVariantMap response, ResponseStatus status); void tasksNotesDeleteFinished(QVariantMap response, ResponseStatus status); void tasksNotesEditFinished(QVariantMap response, ResponseStatus status); + void timeConvertFinished(QVariantMap response, ResponseStatus status); void timeParseFinished(QVariantMap response, ResponseStatus status); + void timelinesCreateFinished(QVariantMap response, ResponseStatus status); + void timezonesGetListFinished(QVariantMap response, ResponseStatus status); + void transactionsUndoFinished(QVariantMap response, ResponseStatus status); + void testLoginFinished(QVariantMap response, ResponseStatus status); public slots: + // Ask for given Permission. + // This will send authLoadUrl signal with url to load in a webview. void authenticate(Permission p); + // When user is done authenticating, call this to request their token. void authRequestToken(); + // Call this to check a stored token. void authCheckToken(QString token); - void authGetToken(); + void contactsAdd(QString timeline, QString contact); void contactsDelete(QString timeline, QString contact); void contactsGetList(); + void groupsAdd(QString timeline, QString groupName); void groupsAddContact(QString timeline, QString groupID, QString contactID); void groupsDelete(QString timeline, QString groupID); void groupsGetList(); void groupsRemoveContact(QString timeline, QString groupID, QString contactID); + void listsAdd(QString timeline, QString listName, QString filter=""); void listsArchive(QString timeline, QString listID); void listsDelete(QString timeline, QString listID); @@ -111,8 +143,11 @@ namespace RTM { void listsSetDefaultList(QString timeline, QString listID = ""); void listsSetName(QString timeline, QString listID, QString listName); void listsUnarchive(QString timeline, QString listID); + void locationsGetList(); + void settingsGetList(); + void tasksAdd(QString timeline, QString taskName, QString listID = ""); void tasksSmartAdd(QString timeline, QString taskName, QString listID = ""); void tasksAddTags(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString tags); @@ -137,22 +172,29 @@ namespace RTM { void tasksNotesAdd(QString timeline, QString listID, QString taskSeriesID, QString taskID, QString noteTitle, QString noteText); void tasksNotesDelete(QString timeline, QString noteID); void tasksNotesEdit(QString timeline, QString noteID, QString noteTitle, QString noteText); + void timeConvert(QString toTimezone); void timeConvert(QString toTimezone, QMap optArgs); void timeParse(QString text); void timeParse(QString text, QMap optArgs); + void timelinesCreate(); + void timezonesGetList(); + void transactionsUndo(QString timeline, QString transactionID); + void testLogin(); - protected slots: + private slots: + void onAuthFinished(); + void onAuthError(); + void onCheckTokenFinished(QVariantMap response, ResponseStatus status); + void onTasksGetListFinished(QVariantMap response, ResponseStatus status); - protected: - Authentication * authentication; - QString apiKey; - QString sharedSecret; - QString token; + private: + class Private; + Private *const d; }; }