rel2 { to_x: "pad.right"; to_y: "pad.bottom"; relative: 0.0 0.0; }
}
}
+ part {
+ name: "swl.gesture";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 1;
+ description {
+ state: "default";
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ }
}
programs {
program { name: "pressed";
class FileViewer
{
public:
- FileViewer();
- ~FileViewer();
+ static FileViewer &getInst();
static bool launch(const std::string &file);
bool launchWithCopy(const std::string &file);
private:
+ FileViewer();
+ ~FileViewer();
FileViewer(const FileViewer&) = delete;
FileViewer& operator=(const FileViewer&) = delete;
FileUtils::remove(m_FilePath);
}
+FileViewer &FileViewer::getInst()
+{
+ static FileViewer inst;
+ return inst;
+}
+
bool FileViewer::launch(const std::string &file)
{
bool res = false;
ComposeListItem(BubbleEntityFactory &entityFactory);
virtual ~ComposeListItem();
+ std::list<std::string> getAttachments() const;
void addAttachment(const std::string &filePath);
void setListener(IComposeListItemListener *l);
virtual void onAction(BubbleViewItem &item);
virtual void onDelClicked(BubbleViewItem &item);
+ void deleteEntity(BubbleEntity &entity);
+
private:
IComposeListItemListener *m_pListener;
std::list<BubbleEntity*> m_BubbleEntityList;
void navigateTo(MsgId msgId);
/**
- * @brief Navigate to last message
+ * @brief Navigate to bottom
*/
- void navigateToLastMsg();
+ void navigateToBottom();
/**
* @brief Deletes selected items in SelectMode
DateLineItemSet m_DateLineItemSet;
IConvListListener *m_pListener;
App &m_App;
- FileViewer m_FileViewer;
ThumbId m_RecipThumbId;
std::string m_SearchWord;
BubbleEntityFactory m_BubbleEntityFactory;
/**
* @brief called when all messages has been deleted from current thread
*/
- virtual void onAllItemsDeleted(ConvList &list) {};
+ virtual void onAllConvItemsDeleted(ConvList &list) {};
virtual void onSlideShow(MsgId id) {};
virtual void onEditDraftMsg(MsgId id) {};
virtual void onForwardMsg(MsgId id) {};
*/
ConvListItem(const MsgConversationItem &item,
App &app,
- FileViewer &fileViewer,
BubbleEntityFactory &bubbleEntityFactory,
const std::string &searchWord,
const ThumbId &thumbId = invalidThumbId);
IConvListItemListener *m_pListener;
App &m_App;
WorkingDirRef m_WorkingDir;
- FileViewer &m_FileViewer;
MsgId m_MsgId;
bool m_IsDraft;
Message::NetworkStatus m_NetworkStatus;
#include "TimeUtils.h"
#include "BubbleItemContainer.h"
#include "ListView.h"
+#include "FileViewer.h"
// Bubble items:
#include "BubbleImageEntity.h"
#include "BubbleCalEventEntity.h"
#include "BubbleContactEntity.h"
+#include <algorithm>
+
using namespace Msg;
ComposeListItem::ComposeListItem(BubbleEntityFactory &entityFactory)
ComposeListItem::~ComposeListItem()
{
-
+ for(BubbleEntity *entity : m_BubbleEntityList)
+ {
+ delete entity;
+ }
+ m_BubbleEntityList.clear();
}
void ComposeListItem::addAttachment(const std::string &filePath)
if(entity)
{
m_BubbleEntityList.push_back(entity);
- update();
+ updateBubblePart();
getOwner()->showItem(*this, ELM_GENLIST_ITEM_SCROLLTO_BOTTOM);
}
}
}
-void ComposeListItem::setListener(IComposeListItemListener *l)
+std::list<std::string> ComposeListItem::getAttachments() const
{
+ std::list<std::string> res;
+ for(BubbleEntity *entity : m_BubbleEntityList)
+ {
+ res.push_back(entity->getFilePath());
+ }
+ return res;
+}
+void ComposeListItem::setListener(IComposeListItemListener *l)
+{
+ m_pListener = l;
}
Evas_Object *ComposeListItem::getBubbleContent()
return msg("IDS_MSGF_BODY_MMS");
}
-void ComposeListItem::onAction(BubbleViewItem &item)
+void ComposeListItem::deleteEntity(BubbleEntity &entity)
{
+ auto it = std::find(m_BubbleEntityList.begin(), m_BubbleEntityList.end(), &entity);
+ if(it != m_BubbleEntityList.end())
+ {
+ std::string filePath = entity.getFilePath();
+ delete *it;
+ m_BubbleEntityList.erase(it);
+ updateBubblePart();
+ if(m_pListener)
+ m_pListener->onAttachmentDeleted(filePath);
+ }
+}
+void ComposeListItem::onAction(BubbleViewItem &item)
+{
+ FileViewer::launch(item.getEntity().getFilePath());
}
void ComposeListItem::onDelClicked(BubbleViewItem &item)
{
-
+ deleteEntity(item.getEntity());
}
, m_DateLineItemSet()
, m_pListener(nullptr)
, m_App(app)
- , m_FileViewer()
, m_RecipThumbId(m_App.getThumbnailMaker().getThumbId(ThumbnailMaker::SingleThumb))
, m_SearchWord()
, m_BubbleEntityFactory(app, workingDir)
m_pList->showItem(*item, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
}
-void ConvList::navigateToLastMsg()
+void ConvList::navigateToBottom()
{
ListItem *item = m_pList->getLastItem();
if(item)
void ConvList::appendItem(const MsgConversationItem &item)
{
if(item.getDirection() == Message::MD_Received)
- appendItem(new ConvListItem(item, m_App, m_FileViewer, m_BubbleEntityFactory, m_SearchWord, m_RecipThumbId));
+ appendItem(new ConvListItem(item, m_App, m_BubbleEntityFactory, m_SearchWord, m_RecipThumbId));
else
- appendItem(new ConvListItem(item, m_App, m_FileViewer, m_BubbleEntityFactory, m_SearchWord));
+ appendItem(new ConvListItem(item, m_App, m_BubbleEntityFactory, m_SearchWord));
}
void ConvList::appendItem(ConvListItem *item)
}
}
- if(m_pListener && m_pList->isEmpty())
- m_pListener->onAllItemsDeleted(*this);
+ if(m_pListener && m_ConvListItemMap.empty())
+ m_pListener->onAllConvItemsDeleted(*this);
return res;
}
}
}
if(inserted)
- navigateToLastMsg();
+ navigateToBottom(); // TODO: navigate to last inserted message or to compose item ?
}
void ConvList::onMsgStorageDelete(const MsgIdList &msgIdList)
ConvListItem::ConvListItem(const MsgConversationItem &item,
App &app,
- FileViewer &fileViewer,
BubbleEntityFactory &bubbleEntityFactory,
const std::string &searchWord,
const ThumbId &thumbId)
: ConvListViewItem(getConvItemType(item))
, m_pListener(nullptr)
, m_App(app)
- , m_FileViewer(fileViewer)
, m_MsgId(item.getMsgId())
, m_IsDraft(item.isDraft())
, m_NetworkStatus(item.getNetworkStatus())
{
const std::string &filePath = item.getEntity().getFilePath();
if(!filePath.empty())
- m_FileViewer.launchWithCopy(filePath);
+ FileViewer::getInst().launchWithCopy(filePath);
break;
}
}
void applyColor(Evas_Object *obj) const;
private:
+ Evas_Object *createGestureRect(Evas_Object *parent);
+
+ private:
BgType m_BgType;
};
}
virtual ~BubbleVideoViewItem();
private:
- Evas_Object *createLayout(Evas_Object *parent, const std::string &path);
+ Evas_Object *createIamge(Evas_Object *parent, const std::string &path);
};
}
virtual std::string getTime() = 0;
virtual std::string getMsgType() = 0;
+ void updateBubblePart();
+
private:
virtual std::string getText(ListItem &item, const char *part);
virtual Evas_Object *getContent(ListItem &item, const char *part);
}
setEo(addLayout(parent, CONV_LIST_BUBBLE_EDJ_PATH, group));
+ View::setContent(createGestureRect(getEo()), "swl.gesture");
evas_object_size_hint_align_set(getEo(), 1.0, EVAS_HINT_FILL);
- attachGestureTapLayer(getEo(), getEo());
+
}
BubbleBgViewItem::~BubbleBgViewItem()
{
applyColor(obj, m_BgType);
}
+
+Evas_Object *BubbleBgViewItem::createGestureRect(Evas_Object *parent)
+{
+ Evas *e = evas_object_rectangle_add(evas_object_evas_get(parent));
+ Evas_Object *rect = evas_object_rectangle_add(e);
+ evas_object_color_set(rect, 0, 0, 0, 0);
+ attachGestureTapLayer(parent, rect);
+ return rect;
+}
: BubbleViewItem(entity)
{
setEo(addLayout(parent, CONV_LIST_BUBBLE_EDJ_PATH, "conv/list/image_item"));
- attachGestureTapLayer(getEo(), getEo());
Evas_Object *img = createImage(parent, imagePath);
setContent(img, "content");
+ attachGestureTapLayer(getEo(), img);
}
BubbleImageViewItem::~BubbleImageViewItem()
BubbleVideoViewItem::BubbleVideoViewItem(BubbleEntity &entity, Evas_Object *parent, const std::string &imagePath)
: BubbleViewItem(entity)
{
- Evas_Object *layout = createLayout(parent, imagePath);
+ Evas_Object *layout = addLayout(parent, CONV_LIST_BUBBLE_EDJ_PATH, "conv/list/video_item");
setEo(layout);
- attachGestureTapLayer(layout, layout);
+ Evas_Object *image = createIamge(layout, imagePath);
+ attachGestureTapLayer(layout, image);
+ setContent(image, "content");
show();
}
{
}
-Evas_Object *BubbleVideoViewItem::createLayout(Evas_Object *parent, const std::string &path)
+Evas_Object *BubbleVideoViewItem::createIamge(Evas_Object *parent, const std::string &path)
{
- Evas_Object *layout = addLayout(parent, CONV_LIST_BUBBLE_EDJ_PATH, "conv/list/video_item");
- Evas_Object *image = elm_image_add(layout);
+ Evas_Object *image = elm_image_add(parent);
elm_image_file_set(image, path.c_str(), nullptr);
int imageWidth = 0;
int imageHeight = 0;
}
evas_object_size_hint_min_set(image, imageWidth, imageHeight);
evas_object_show(image);
-
- elm_object_part_content_set(layout, "content", image);
- return layout;
+ return image;
}
return nullptr;
}
+void ComposeListViewItem::updateBubblePart()
+{
+ updateFields(bubbleContentPart, ELM_GENLIST_ITEM_FIELD_CONTENT);
+}
virtual ~Conversation();
void navigateTo(MsgId msgId);
- void navigateToLastMsg();
+ void navigateToBottom();
void execCmd(const AppControlComposeRef &cmd);
void execCmd(const AppControlDefaultRef &cmd);
void setThreadId(ThreadId id, const std::string &searchWord = std::string());
void onViewContactDetailsItemPressed(PopupListItem &item);
// IConvListListener:
- virtual void onAllItemsDeleted(ConvList &list);
+ virtual void onAllConvItemsDeleted(ConvList &list);
virtual void onEditDraftMsg(MsgId id);
virtual void onForwardMsg(MsgId id);
virtual void onSlideShow(MsgId id);
m_pConvList->navigateTo(msgId);
}
-void Conversation::navigateToLastMsg()
+void Conversation::navigateToBottom()
{
- m_pConvList->navigateToLastMsg();
+ m_pConvList->navigateToBottom();
}
void Conversation::setThreadId(ThreadId id, const std::string &searchWord)
id = getMsgEngine().getStorage().getThreadId(recips);
m_pConvList->setThreadId(id);
- m_pConvList->navigateToLastMsg();
+ m_pConvList->navigateToBottom();
}
}
ContactViewer::launch(id, ownerType);
}
-void Conversation::onAllItemsDeleted(ConvList &list)
+void Conversation::onAllConvItemsDeleted(ConvList &list)
{
MSG_LOG("");
if(m_Mode != NewMessageMode)
if(msgId.isValid())
frame->navigateTo(msgId);
else
- frame->navigateToLastMsg();
+ frame->navigateToBottom();
getParent().push(*frame);
}
bool m_HasAudio;
SmilImageItemView *m_pImageItem;
std::list<std::string> m_Attachments;
- FileViewer m_FileViewer;
bool m_HasInvalidMedia;
};
}
void SmilPage::onItemClicked(SmilAttachmentItemView &item)
{
MSG_LOG("");
- m_FileViewer.launchWithCopy(item.getFilePath());
+ FileViewer::getInst().launchWithCopy(item.getFilePath());
}
void SmilPage::onSaveButtonClicked(SmilAttachmentItemView &item)