{
Evas_Object *layout = elm_layout_add(parent);
elm_layout_file_set(layout, layoutPath.c_str(), GROUP_NO_CONTACTS);
- edje_object_signal_callback_add(elm_layout_edje_get(layout), "mouse,clicked,*", "*",
+ elm_layout_signal_callback_add(layout, "mouse,clicked,*", "*",
(Edje_Signal_Cb) makeCallback(&Widget::onAddPressed), this);
elm_object_translatable_part_text_set(layout, PART_TITLE,
virtual void onSelected() override;
void onInfoIconPressed();
+ const char *getName(const char *name, const char *number) const;
+ const char *getNumber(const char *name, const char *number) const;
+ std::string formatCount() const;
+
Evas_Object *createThumbnail(Evas_Object *parent);
- Evas_Object *createLayout(Evas_Object *parent, const char *layoutName);
- Evas_Object *createIcon(Evas_Object *parent, const char *path);
const char *getImagePath(int type);
void updateItem(int type);
# EDC Flags
USER_EXT_EDC_KEYS = EDC0
-USER_EXT_EDC0_EDCS = res/details/edje/logs-details-item-layout.edc res/logs/edje/log-item.edc res/logs/edje/log-colors.edc
+USER_EXT_EDC0_EDCS = res/details/edje/logs-details-item-layout.edc res/logs/edje/log-item.edc
USER_EXT_EDC0_EDCS_IMAGE_DIRS = res
USER_EXT_EDC0_EDCS_IMAGE_DIRS_ABS =
USER_EXT_EDC0_EDCS_SOUND_DIRS = edje/sounds
#ifndef LOG_ITEM_LAYOUT_H
#define LOG_ITEM_LAYOUT_H
-#define LOG_ITEM "log_item"
+#define LAYOUT_LOG_ITEM "log_item"
-#define ICON_INCOMING "icon_incoming"
-#define ICON_OUTGOING "icon_outgoing"
-#define ICON_MISSED "icon_missed"
-#define ICON_REJECTED "icon_rejected"
-#define ICON_AUTO_REJECTED "icon_auto_rejected"
-#define ICON_INFO "icon_info"
+#define LAYOUT_ICON_INCOMING "icon_incoming"
+#define LAYOUT_ICON_OUTGOING "icon_outgoing"
+#define LAYOUT_ICON_MISSED "icon_missed"
+#define LAYOUT_ICON_REJECTED "icon_rejected"
+#define LAYOUT_ICON_AUTO_REJECTED "icon_auto_rejected"
+#define LAYOUT_ICON_INFO "icon_info"
-#define THUMBNAIL_PART "swallow.content"
-#define LOG_TYPE_PART "swallow.call.type"
+#define PART_THUMBNAIL "swallow.thumbnail"
+#define PART_LOG_TYPE "swallow.log_type"
+#define PART_BG "rect.bg"
#endif /* LOG_ITEM_LAYOUT_H */
+++ /dev/null
-/*
- * Copyright (c) 2015-2016 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-color_classes {
- color_class {
- name: "log_type_incoming";
- color: 42 134 176 255;
- }
- color_class {
- name: "log_type_outgoing";
- color: 52 158 91 255;
- }
- color_class {
- name: "log_type_missed_reject";
- color: 224 34 34 255;
- }
- color_class {
- name: "log_type_bg";
- color: 255 255 255 255;
- }
- color_class {
- name: "info_icon";
- color: 249 249 249 255;
- }
- color_class {
- name: "info_icon_bg";
- color: 61 184 204 255;
- }
- color_class {
- name: "info_icon_bg_pressed";
- color: 45 138 153 255;
- }
-}
\ No newline at end of file
#include "LogPath.h"
#include "LogItemLayout.h"
-#include "log-colors.edc"
#include "../../../../lib-apps-common/res/apps-common/edje/apps-common-utils.edc"
-#define LAYOUT_H 104
-#define LAYOUT_W 105
-#define THUMBNAIL_SIZE 98
-#define LOG_TYPE_X 60
-#define LOG_TYPE_Y 59
+#define THUMBNAIL_WH 98
+#define LOG_TYPE_WH 45
+#define LOG_TYPE_R 7
+#define LOG_TYPE_B 6
+
+#define ICON_INFO_WH 50
+#define ICON_INFO_L 32
+#define ICON_INFO_T 47
+
+color_classes {
+ color_class {
+ name: "log_type_incoming";
+ color: 42 134 176 255;
+ }
+ color_class {
+ name: "log_type_outgoing";
+ color: 52 158 91 255;
+ }
+ color_class {
+ name: "log_type_missed_reject";
+ color: 224 34 34 255;
+ }
+ color_class {
+ name: "log_type_bg";
+ color: 255 255 255 255;
+ }
+ color_class {
+ name: "info_icon";
+ color: 249 249 249 255;
+ }
+ color_class {
+ name: "info_icon_bg";
+ color: 61 184 204 255;
+ }
+ color_class {
+ name: "info_icon_bg_pressed";
+ color: 45 138 153 255;
+ }
+}
collections
{
base_scale: 2.6;
- IMAGE_WITH_COLOR_AND_BG(ICON_INCOMING, LOG_ICON_INCOMING, "log_type_bg", LOG_ICON_CONTAINER, "log_type_incoming")
- IMAGE_WITH_COLOR_AND_BG(ICON_OUTGOING, LOG_ICON_OUTGOING, "log_type_bg", LOG_ICON_CONTAINER, "log_type_outgoing")
- IMAGE_WITH_COLOR_AND_BG(ICON_MISSED, LOG_ICON_MISSED, "log_type_bg", LOG_ICON_CONTAINER, "log_type_missed_reject")
- IMAGE_WITH_COLOR_AND_BG(ICON_REJECTED, LOG_ICON_REJECTED, "log_type_bg", LOG_ICON_CONTAINER, "log_type_missed_reject")
- IMAGE_WITH_COLOR_AND_BG(ICON_AUTO_REJECTED, LOG_ICON_AUTO_REJECTED, "log_type_bg", LOG_ICON_CONTAINER, "log_type_missed_reject")
+ IMAGE_WITH_COLOR_AND_BG(LAYOUT_ICON_INCOMING, LOG_ICON_INCOMING, "log_type_bg", LOG_ICON_CONTAINER, "log_type_incoming")
+ IMAGE_WITH_COLOR_AND_BG(LAYOUT_ICON_OUTGOING, LOG_ICON_OUTGOING, "log_type_bg", LOG_ICON_CONTAINER, "log_type_outgoing")
+ IMAGE_WITH_COLOR_AND_BG(LAYOUT_ICON_MISSED, LOG_ICON_MISSED, "log_type_bg", LOG_ICON_CONTAINER, "log_type_missed_reject")
+ IMAGE_WITH_COLOR_AND_BG(LAYOUT_ICON_REJECTED, LOG_ICON_REJECTED, "log_type_bg", LOG_ICON_CONTAINER, "log_type_missed_reject")
+ IMAGE_WITH_COLOR_AND_BG(LAYOUT_ICON_AUTO_REJECTED, LOG_ICON_AUTO_REJECTED, "log_type_bg", LOG_ICON_CONTAINER, "log_type_missed_reject")
- group {
- name: LOG_ITEM;
+ group { LAYOUT_LOG_ITEM;
parts {
- part {
- name: THUMBNAIL_PART;
- type: SWALLOW;
- scale: 1;
- description {
- state: "default" 0.0;
- rel1.relative: 0.0 0.0;
- rel2.relative: (THUMBNAIL_SIZE/LAYOUT_W) (THUMBNAIL_SIZE/LAYOUT_H);
+ swallow { PART_THUMBNAIL; scale;
+ desc { "default";
+ min: THUMBNAIL_WH THUMBNAIL_WH;
}
}
- part {
- name: LOG_TYPE_PART;
- type: SWALLOW;
- scale: 1;
- description {
- state: "default" 0.0;
- rel1.relative: (LOG_TYPE_X/LAYOUT_W) (LOG_TYPE_Y/LAYOUT_H);
- rel2.relative: 1.0 1.0;
+ spacer { "spacer.log_type.right_bottom"; scale;
+ desc { "default";
+ align: 0.0 0.0;
+ min: LOG_TYPE_R LOG_TYPE_B;
+ rel1 { relative: 1.0 1.0; to: PART_THUMBNAIL; }
+ rel2 { relative: 1.0 1.0; to: PART_THUMBNAIL; }
}
}
- }
+ swallow { PART_LOG_TYPE; scale;
+ desc { "default";
+ align: 1.0 1.0;
+ min: LOG_TYPE_WH LOG_TYPE_WH;
+ rel1 { relative: 1.0 1.0; to: "spacer.log_type.right_bottom"; }
+ rel2 { relative: 1.0 1.0; to: "spacer.log_type.right_bottom"; }
+ }
+ }
+ }
}
- group {
- name: ICON_INFO;
+ group { LAYOUT_ICON_INFO;
images.image: LOG_ICON_INFO_BG COMP;
images.image: LOG_ICON_INFO COMP;
parts {
- part { name: "rect.bg";
- scale: 1;
- type: RECT;
- description {
- state: "default" 0.0;
+ rect { PART_BG;
+ desc { "default";
color: 255 255 255 0;
- rel1.relative: 0.0 0.0;
- rel2.relative: 1.0 1.0;
- aspect: 1 1;
}
}
- part { name: "image.bg";
- description {
- state: "default" 0.0;
+ image { "image.bg"; scale; repeat;
+ desc { "default";
+ min: ICON_INFO_WH ICON_INFO_WH;
+ rel1.relative: 0.5 0.5;
+ rel2.relative: 0.5 0.5;
image.normal: LOG_ICON_INFO_BG;
color_class: "info_icon_bg";
- aspect: 1 1;
- aspect_preference: SOURCE;
}
- description {
- state: "pressed" 0.0;
- inherit: "default" 0.0;
+ desc { "pressed";
+ inherit: "default";
color_class: "info_icon_bg_pressed";
}
}
- part { name: "image";
- description {
- state: "default" 0.0;
+ image { "image"; scale; repeat;
+ desc { "default";
+ min: ICON_INFO_WH ICON_INFO_WH;
+ rel1.to: "image.bg";
+ rel2.to: "image.bg";
image.normal: LOG_ICON_INFO;
color_class: "info_icon";
- aspect: 1 1;
- aspect_preference: SOURCE;
}
}
}
#define BUFFER_SIZE 64
#define LOG_TYPE_SIZE 45
-#define PART_LOG_TYPE "elm.text.sub"
+#define PART_LOG_TYPE_TEXT "elm.text.sub"
#define PART_LOG_TYPE_ICON "elm.swallow.icon"
#define PART_CHECK "elm.swallow.end"
char *LogDetailItem::getText(Evas_Object *parent, const char *part)
{
- if (strcmp(part, PART_LOG_TYPE) == 0) {
+ if (strcmp(part, PART_LOG_TYPE_TEXT) == 0) {
time_t duration = m_Log->getDuration();
return strdup(formatDuration(*gmtime(&duration)).c_str());
} else if (strcmp(part, PART_LOG_TIME) == 0) {
const char *path = nullptr;
switch (type) {
case CONTACTS_PLOG_TYPE_VOICE_OUTGOING:
- path = ICON_OUTGOING;
+ path = LAYOUT_ICON_OUTGOING;
break;
case CONTACTS_PLOG_TYPE_VOICE_INCOMING:
- path = ICON_INCOMING;
+ path = LAYOUT_ICON_INCOMING;
break;
case CONTACTS_PLOG_TYPE_VOICE_INCOMING_UNSEEN:
case CONTACTS_PLOG_TYPE_VOICE_INCOMING_SEEN:
- path = ICON_MISSED;
+ path = LAYOUT_ICON_MISSED;
break;
case CONTACTS_PLOG_TYPE_VOICE_REJECT:
- path = ICON_REJECTED;
+ path = LAYOUT_ICON_REJECTED;
break;
case CONTACTS_PLOG_TYPE_VOICE_BLOCKED:
- path = ICON_AUTO_REJECTED;
+ path = LAYOUT_ICON_AUTO_REJECTED;
break;
}
#include <time.h>
#define BUFFER_SIZE 32
-#define LOG_TYPE_SIZE 50
-#define LOG_INFO_BG_SIZE 100
-#define LOG_TIME_TEXT_SIZE 22
#define LOG_GROUP_MAX_COUNT 999
#define PART_LOG_NAME "elm.text"
const char *name = log->getName();
const char *number = log->getNumber();
- if (!name) {
- if (number) {
- name = number;
- number = _("IDS_LOGS_SBODY_UNSAVED_M_STATUS");
- } else {
- name = _("IDS_LOGS_MBODY_UNKNOWN");
- number = _("IDS_LOGS_SBODY_NO_NUMBER_ABB");
- }
- } else if (Utils::safeCmp(name, number)){
- number = _("IDS_LOGS_SBODY_SAVED_M_STATUS");
- }
-
if (strcmp(part, PART_LOG_NAME) == 0) {
- return Utils::safeDup(name);
+ return strdup(getName(name, number));
} else if (strcmp(part, PART_LOG_NUMBER) == 0) {
- return Utils::safeDup(number);
+ return Utils::safeDup(getNumber(name, number));
} else if (strcmp(part, PART_LOG_COUNT) == 0) {
- size_t size = m_Group->getLogList().size();
- if (size == 1) {
- return nullptr;
- }
- char buffer[BUFFER_SIZE];
- if (size > LOG_GROUP_MAX_COUNT) {
- snprintf(buffer, sizeof(buffer), "(%d+)", LOG_GROUP_MAX_COUNT);
- } else {
- snprintf(buffer, sizeof(buffer), "(%zu)", size);
- }
- return strdup(buffer);
+ return strdup(formatCount().c_str());
} else if (strcmp(part, PART_LOG_TIME) == 0) {
- char buffer[BUFFER_SIZE];
- snprintf(buffer, sizeof(buffer), "<font_size=%d>%s</font_size>", LOG_TIME_TEXT_SIZE, Logs::Common::formatTime(log->getTime()).c_str());
- return strdup(buffer);
+ return strdup(Logs::Common::formatTime(log->getTime()).c_str());
}
return nullptr;
return createThumbnail(parent);
} else if (strcmp(part, PART_END) == 0) {
if (getSelectMode() == Ux::SelectNone) {
- Evas_Object *icon = elm_image_add(parent);
- elm_image_file_set(icon, layoutPath.c_str(), ICON_INFO);
- evas_object_size_hint_min_set(icon, getScaledValue(LOG_TYPE_SIZE), getScaledValue(LOG_INFO_BG_SIZE));
- evas_object_propagate_events_set(icon, EINA_FALSE);
- evas_object_smart_callback_add(icon, "clicked",
- (Evas_Smart_Cb) makeCallback(&LogItem::onInfoIconPressed), this);
- return icon;
+ Evas_Object *layout = elm_layout_add(parent);
+ elm_layout_file_set(layout, layoutPath.c_str(), LAYOUT_ICON_INFO);
+ evas_object_propagate_events_set(layout, EINA_FALSE);
+ elm_layout_signal_callback_add(layout, "mouse,clicked,*", PART_BG,
+ (Edje_Signal_Cb) makeCallback(&LogItem::onInfoIconPressed), this);
+ return layout;
} else {
return SelectItem::getContent(parent, part);
}
navigator->navigateTo(new DetailsView(getGroup()->getLogList().back()->getNumber()));
}
-Evas_Object *LogItem::createThumbnail(Evas_Object *parent)
+const char *LogItem::getName(const char *name, const char *number) const
{
- using Ui::Thumbnail;
+ if (!name) {
+ name = number ? number : _("IDS_LOGS_MBODY_UNKNOWN");
+ }
- const Log *log = m_Group->getLogList().back();
- Evas_Object *layout = createLayout(parent, LOG_ITEM);
+ return name;
+}
- Thumbnail *thumbnail = Thumbnail::create(parent, Thumbnail::SizeSmall, log->getImagePath());
- thumbnail->setSizeHint(true);
+const char *LogItem::getNumber(const char *name, const char *number) const
+{
+ if (!name) {
+ return _(number ? "IDS_LOGS_SBODY_UNSAVED_M_STATUS" : "IDS_LOGS_SBODY_NO_NUMBER_ABB");
+ } else if (Utils::safeCmp(name, number)) {
+ return _("IDS_LOGS_SBODY_SAVED_M_STATUS");
+ }
- elm_layout_content_set(layout, THUMBNAIL_PART, thumbnail->getEvasObject());
- elm_layout_content_set(layout, LOG_TYPE_PART, createIcon(layout, getImagePath(log->getType())));
+ return number;
+}
- return layout;
+std::string LogItem::formatCount() const
+{
+ size_t size = m_Group->getLogList().size();
+ if (size == 1) {
+ return std::string();
+ }
+ char count[BUFFER_SIZE] = { 0, };
+ if (size > LOG_GROUP_MAX_COUNT) {
+ snprintf(count, sizeof(count), "(%d+)", LOG_GROUP_MAX_COUNT);
+ } else {
+ snprintf(count, sizeof(count), "(%zu)", size);
+ }
+ return count;
}
-Evas_Object *LogItem::createLayout(Evas_Object *parent, const char *layoutName)
+Evas_Object *LogItem::createThumbnail(Evas_Object *parent)
{
+ using Ui::Thumbnail;
+
+ const Log *log = m_Group->getLogList().back();
Evas_Object *layout = elm_layout_add(parent);
- elm_layout_file_set(layout, layoutPath.c_str(), layoutName);
+ elm_layout_file_set(layout, layoutPath.c_str(), LAYOUT_LOG_ITEM);
- return layout;
-}
+ Thumbnail *thumbnail = Thumbnail::create(parent, Thumbnail::SizeSmall, log->getImagePath());
+ elm_layout_content_set(layout, PART_THUMBNAIL, thumbnail->getEvasObject());
-Evas_Object *LogItem::createIcon(Evas_Object *parent, const char *path)
-{
Evas_Object *icon = elm_image_add(parent);
- elm_image_file_set(icon, layoutPath.c_str(), path);
+ elm_image_file_set(icon, layoutPath.c_str(), getImagePath(log->getType()));
+ elm_layout_content_set(layout, PART_LOG_TYPE, icon);
- static int size = getScaledValue(LOG_TYPE_SIZE);
- evas_object_size_hint_min_set(icon, size, size);
- return icon;
+ return layout;
}
-
const char *LogItem::getImagePath(int type)
{
const char *path = nullptr;
switch (type) {
case CONTACTS_PLOG_TYPE_VOICE_OUTGOING:
- path = ICON_OUTGOING;
+ path = LAYOUT_ICON_OUTGOING;
break;
case CONTACTS_PLOG_TYPE_VOICE_INCOMING:
- path = ICON_INCOMING;
+ path = LAYOUT_ICON_INCOMING;
break;
case CONTACTS_PLOG_TYPE_VOICE_INCOMING_UNSEEN:
case CONTACTS_PLOG_TYPE_VOICE_INCOMING_SEEN:
- path = ICON_MISSED;
+ path = LAYOUT_ICON_MISSED;
break;
case CONTACTS_PLOG_TYPE_VOICE_REJECT:
- path = ICON_REJECTED;
+ path = LAYOUT_ICON_REJECTED;
break;
case CONTACTS_PLOG_TYPE_VOICE_BLOCKED:
- path = ICON_AUTO_REJECTED;
+ path = LAYOUT_ICON_AUTO_REJECTED;
break;
}
{
Evas_Object *layout = elm_layout_add(parent);
elm_layout_file_set(layout, layoutFilePath.c_str(), LAYOUT_PREDICTIVE);
-
- Evas_Object *edje = elm_layout_edje_get(layout);
- edje_object_signal_callback_add(edje, "mouse,clicked,*", PART_BG,
+ elm_layout_signal_callback_add(layout, "mouse,clicked,*", PART_BG,
(Edje_Signal_Cb) makeCallback(&SearchResultsControl::onResultPressed), this);
return layout;
m_ResultsCount = elm_layout_add(getEvasObject());
elm_layout_file_set(m_ResultsCount, layoutFilePath.c_str(), LAYOUT_BUTTON_MORE);
-
- Evas_Object *edje = elm_layout_edje_get(m_ResultsCount);
- edje_object_signal_callback_add(edje, "mouse,clicked,*", PART_BG,
+ elm_layout_signal_callback_add(m_ResultsCount, "mouse,clicked,*", PART_BG,
(Edje_Signal_Cb) makeCallback(&SearchResultsControl::onShowResultsPressed), this);
}