#ifndef CONTACTS_DETAILS_DETAILS_VIEW_H
#define CONTACTS_DETAILS_DETAILS_VIEW_H
-#include "App/AppControl.h"
#include "Contacts/Common/ContactSelectTypes.h"
#include "Contacts/Model/Contact.h"
#include "Ux/SelectView.h"
Ui::Genlist *m_Genlist;
BasicInfoItem *m_BasicInfoItem;
FieldItem *m_Items[Model::FieldEnd];
-
- App::AppControl m_AppControl;
};
}
}
*
*/
-#ifndef CONTACTS_LIST_SHARE_POPUP_H
-#define CONTACTS_LIST_SHARE_POPUP_H
+#ifndef CONTACTS_DETAILS_SHARE_POPUP_H
+#define CONTACTS_DETAILS_SHARE_POPUP_H
#include "Ui/ListPopup.h"
#include "Contacts/Model/ContactObject.h"
namespace Contacts
{
- namespace List
+ namespace Details
{
class SharePopup : public Ui::ListPopup
{
/**
* Create popup
* @param[in] personId Person ID
+ * @param[in] isMyProfile True if @a personId from _contacts_my_profile view,
+ * false - from _contacts_contact
*/
- explicit SharePopup(int personId);
+ explicit SharePopup(int personId, bool isMyProfile = false);
protected:
/**
void formatTypedObject(std::string &text, Contacts::Model::ContactObject &object);
int m_PersonId;
+ Contacts::Model::ContactObjectType m_Type;
};
}
}
-#endif /* CONTACTS_LIST_SHARE_POPUP_H */
+#endif /* CONTACTS_DETAILS_SHARE_POPUP_H */
#include "Contacts/Details/GroupsFieldItem.h"
#include "Contacts/Details/MultilineFieldItem.h"
#include "Contacts/Details/RingtoneFieldItem.h"
+#include "Contacts/Details/SharePopup.h"
#include "Contacts/Details/TypedActionFieldItem.h"
+
#include "Contacts/Input/InputView.h"
#include "Contacts/Model/ContactArray.h"
#include "Common/Strings.h"
-#include "App/AppControlRequest.h"
#include "App/Path.h"
#include "Ui/Genlist.h"
#include "Ui/Menu.h"
popup->show();
});
menu->addItem("IDS_PB_OPT_SHARE", [this] {
+ SharePopup *popup = nullptr;
if (m_Contact.getSubType() == ObjectTypeContact) {
int personId = 0;
contacts_record_get_int(m_Contact.getRecord(), _contacts_contact.person_id, &personId);
- m_AppControl = App::requestShareContact(personId);
+ popup = new SharePopup(personId, false);
} else {
- m_AppControl = App::requestShareMyProfile(m_Contact.getRecordId());
+ popup = new SharePopup(m_Contact.getRecordId(), true);
}
-
- m_AppControl.launch();
+ popup->create(getEvasObject());
+ popup->show();
});
menu->show();
*
*/
-#include "Contacts/List/SharePopup.h"
+#include "Contacts/Details/SharePopup.h"
+#include "Contacts/Model/Contact.h"
#include "Contacts/Model/ContactArray.h"
#include "Contacts/Model/ContactDateField.h"
#include "Contacts/Model/ContactTypedObject.h"
-#include "Contacts/Model/ContactFieldMetadata.h"
#include "Common/Database/Queries.h"
#include "Common/Strings.h"
-#include "Utils/Logger.h"
#include "App/AppControlRequest.h"
using namespace Common;
using namespace Common::Database;
-using namespace Contacts::List;
+using namespace Contacts::Details;
using namespace Contacts::Model;
using namespace Ux;
-SharePopup::SharePopup(int personId)
+SharePopup::SharePopup(int personId, bool isMyProfile)
: m_PersonId(personId)
{
+ m_Type = isMyProfile ? ObjectTypeMyProfile : ObjectTypeContact;
}
void SharePopup::onCreated()
{
- setTitle("IDS_PB_HEADER_SHARE");
+ setTitle("IDS_PB_HEADER_SHARE_CONTACT_AS");
addItem("IDS_PB_OPT_VCARD_FILE_HVCF", std::bind(&SharePopup::shareAsVcard, this));
addItem("IDS_PB_OPT_TEXT", std::bind(&SharePopup::shareAsText, this));
}
void SharePopup::shareAsVcard()
{
- std::string idStr = std::to_string(m_PersonId);
- const char *id = idStr.c_str();
-
- App::AppControl request = App::requestMultiShareContacts(&id, 1);
+ App::AppControl request;
+ if (m_Type == ObjectTypeContact) {
+ request = App::requestShareContact(m_PersonId);
+ } else {
+ request = App::requestShareMyProfile(m_PersonId);
+ }
request.launch();
request.detach();
}
std::string SharePopup::prepareText(int personId)
{
std::string text;
- contacts_record_h record = nullptr;
- contacts_db_get_record(_contacts_contact._uri, getDisplayContactId(m_PersonId), &record);
+ Contact contact(m_Type);
- ContactObject contact(nullptr, *getContactMetadata(ObjectTypeContact));
- contact.initialize(record);
- formatObject(text, contact);
+ if (m_Type == ObjectTypeContact) {
+ contact.initialize(getDisplayContactId(personId));
+ } else {
+ contact.initialize(personId);
+ }
- contacts_record_destroy(record, true);
+ formatObject(text, contact);
return text;
}
bool isEmpty = true;
for (auto &&field : object) {
- if (object.getSubType() == ObjectTypeContact && !isFieldVisible[field.getId()]) {
+ if (object.getSubType() == m_Type && !isFieldVisible[field.getId()]) {
continue;
}
#include "Contacts/List/ListView.h"
#include "Contacts/List/ListSection.h"
#include "Contacts/List/ManageFavoritesPopup.h"
-#include "Contacts/List/SharePopup.h"
#include "Contacts/List/Model/FavoritesProvider.h"
#include "Contacts/List/Model/MfcProvider.h"
#include "Contacts/List/SearchField.h"
#include "Contacts/Details/DetailsView.h"
+#include "Contacts/Details/SharePopup.h"
#include "Contacts/Input/InputView.h"
#include "Contacts/Groups/GroupsView.h"
#include "Contacts/Settings/MainView.h"
size_t count = results.size();
if (count == 1) {
- SharePopup *popup = new SharePopup(results[0].value.id);
+ Details::SharePopup *popup = new Details::SharePopup(results[0].value.id);
popup->create(getEvasObject());
+ popup->setTitle("IDS_PB_HEADER_SHARE");
popup->setSelectCallback([this](void *data) {
onSelectFinished();
});