diff --git a/res/drawable/add_call.xml b/res/drawable/add_call.xml
deleted file mode 100644
index ee0e337e9..000000000
--- a/res/drawable/add_call.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
diff --git a/res/drawable/add_contact_button.xml b/res/drawable/add_contact_button.xml
deleted file mode 100644
index f1fa1d0a3..000000000
--- a/res/drawable/add_contact_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/res/drawable/backspace.xml b/res/drawable/backspace.xml
index 6f2a75a42..e5209e310 100644
--- a/res/drawable/backspace.xml
+++ b/res/drawable/backspace.xml
@@ -1,7 +1,9 @@
-
+
diff --git a/res/drawable/backspace_disabled.xml b/res/drawable/backspace_disabled.xml
new file mode 100644
index 000000000..9805546bd
--- /dev/null
+++ b/res/drawable/backspace_disabled.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/res/drawable/add_contact.xml b/res/drawable/contact_add_button.xml
similarity index 61%
rename from res/drawable/add_contact.xml
rename to res/drawable/contact_add_button.xml
index fd289bf98..c688770db 100644
--- a/res/drawable/add_contact.xml
+++ b/res/drawable/contact_add_button.xml
@@ -1,9 +1,7 @@
-
+ android:drawable="@drawable/contact_add_disabled" />
diff --git a/res/drawable/contact_add_disabled.xml b/res/drawable/contact_add_disabled.xml
new file mode 100644
index 000000000..91d8435cc
--- /dev/null
+++ b/res/drawable/contact_add_disabled.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/res/layout-small/dialer.xml b/res/layout-small/dialer.xml
index d4bdcb803..c863dc6c1 100644
--- a/res/layout-small/dialer.xml
+++ b/res/layout-small/dialer.xml
@@ -36,7 +36,7 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:scaleType="fitXY"
- android:src="@drawable/add_contact" />
+ android:src="@drawable/toolbar_button" />
+ android:src="@drawable/contact_add" />
+ android:orientation="vertical">
-
-
+
+ android:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/dialer.xml b/res/layout/dialer.xml
index 6d6ab11e2..20dfeef56 100644
--- a/res/layout/dialer.xml
+++ b/res/layout/dialer.xml
@@ -2,11 +2,11 @@
+ android:background="@color/colorH">
+ android:layout_centerVertical="true"
+ style="@style/font5"/>
@@ -46,20 +47,21 @@
android:layout_height="60dp">
+ android:src="@drawable/contact_add_button" />
@@ -72,7 +74,7 @@
android:adjustViewBounds="true"
android:scaleType="center"
android:layout_weight="0.5"
- android:src="@drawable/call_alt_start" />
+ android:src="@drawable/call_audio_start" />
@@ -80,8 +82,8 @@
android:contentDescription="@string/content_description_numpad"
android:id="@+id/Dialer"
android:layout_centerInParent="true"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
android:layout_above="@id/controls"
android:layout_below="@id/AddressBar" />
diff --git a/res/layout/history_detail.xml b/res/layout/history_detail.xml
index 1c2436581..76d3bc98b 100644
--- a/res/layout/history_detail.xml
+++ b/res/layout/history_detail.xml
@@ -30,7 +30,7 @@
android:contentDescription="@string/content_description_add_contact"
android:layout_alignParentRight="true"
android:padding="10dp"
- android:src="@drawable/add_contact"
+ android:src="@drawable/contact_add"
android:background="@drawable/toolbar_button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
diff --git a/res/layout/incoming_alt.xml b/res/layout/incoming_alt.xml
new file mode 100644
index 000000000..924f312d4
--- /dev/null
+++ b/res/layout/incoming_alt.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/incoming_header.xml b/res/layout/incoming_header.xml
deleted file mode 100644
index 4ab02face..000000000
--- a/res/layout/incoming_header.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/layout/main.xml b/res/layout/main.xml
index 1dc4e4721..ae8791785 100644
--- a/res/layout/main.xml
+++ b/res/layout/main.xml
@@ -38,7 +38,7 @@
@@ -54,7 +54,6 @@
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:layout_margin="10dp"
- android:scaleType="center"
android:contentDescription="@string/content_description_history"
android:src="@drawable/footer_history" />
@@ -91,7 +90,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
- android:scaleType="center"
android:layout_margin="10dp"
android:contentDescription="@string/content_description_contacts"
android:src="@drawable/footer_contacts" />
@@ -120,7 +118,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
- android:scaleType="center"
android:layout_margin="10dp"
android:contentDescription="@string/content_description_contacts"
android:src="@drawable/footer_dialer" />
@@ -146,7 +143,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
- android:scaleType="center"
+ android:layout_margin="10dp"
android:contentDescription="@string/content_description_contacts"
android:src="@drawable/footer_chat" />
diff --git a/res/layout/numpad.xml b/res/layout/numpad.xml
index 2e25eae44..61ffd39d0 100644
--- a/res/layout/numpad.xml
+++ b/res/layout/numpad.xml
@@ -1,30 +1,289 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="20dp"
+ android:layout_weight="1">
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/values/custom.xml b/res/values/custom.xml
index a4a8974d6..f281116b8 100644
--- a/res/values/custom.xml
+++ b/res/values/custom.xml
@@ -3,6 +3,7 @@
d MMM
yyyy/MM/dd - HH:mm
HH:mm d MMM
+ dd/MM
HH:mm
linphone-mms-%s.jpg
diff --git a/res/values/digit_style.xml b/res/values/digit_style.xml
index 78be53796..328ddb4b1 100644
--- a/res/values/digit_style.xml
+++ b/res/values/digit_style.xml
@@ -3,6 +3,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/org/linphone/ChatListFragment.java b/src/org/linphone/ChatListFragment.java
index c1caecb24..f3773577c 100644
--- a/src/org/linphone/ChatListFragment.java
+++ b/src/org/linphone/ChatListFragment.java
@@ -20,6 +20,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
import java.util.List;
import org.linphone.core.LinphoneAddress;
@@ -64,9 +66,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
private List mConversations, mDrafts;
private ListView chatList;
private TextView noChatHistory;
- private ImageView edit, selectAll, deselectAll, delete, newDiscussion;
- private ImageView clearFastChat;
- private EditText fastNewChat;
+ private ImageView edit, selectAll, deselectAll, delete, newDiscussion, contactPicture;
private boolean isEditMode = false;
private boolean useLinphoneStorage;
@@ -81,6 +81,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
registerForContextMenu(chatList);
noChatHistory = (TextView) view.findViewById(R.id.noChatHistory);
+
edit = (ImageView) view.findViewById(R.id.edit);
edit.setOnClickListener(this);
@@ -96,12 +97,6 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
delete = (ImageView) view.findViewById(R.id.delete);
delete.setOnClickListener(this);
-
- clearFastChat = (ImageView) view.findViewById(R.id.clearFastChatField);
- clearFastChat.setOnClickListener(this);
-
- fastNewChat = (EditText) view.findViewById(R.id.newFastChat);
-
return view;
}
@@ -212,10 +207,10 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
public void onClick(View v) {
int id = v.getId();
- if (id == R.id.clearFastChatField) {
+ /*if (id == R.id.clearFastChatField) {
fastNewChat.setText("");
- }
- else if (id == R.id.delete) {
+ }*/
+ if (id == R.id.delete) {
edit.setVisibility(View.VISIBLE);
selectAll.setVisibility(View.GONE);
deselectAll.setVisibility(View.GONE);
@@ -241,7 +236,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
hideAndDisplayMessageIfNoChat();
}
else if (id == R.id.new_discussion) {
- String sipUri = fastNewChat.getText().toString();
+ /*String sipUri = fastNewChat.getText().toString();
if (sipUri.equals("")) {
LinphoneActivity.instance().displayContacts(true);
} else {
@@ -255,7 +250,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
sipUri = "sip:" + sipUri;
}
LinphoneActivity.instance().displayChat(sipUri);
- }
+ }*/
}
}
@@ -330,6 +325,38 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
}
return null;
}
+
+ public String timestampToHumanDate(long timestamp) {
+ try {
+ Calendar cal = Calendar.getInstance();
+ cal.setTimeInMillis(timestamp);
+
+ SimpleDateFormat dateFormat;
+ if (isToday(cal)) {
+ dateFormat = new SimpleDateFormat(getResources().getString(R.string.today_date_format));
+ } else {
+ dateFormat = new SimpleDateFormat(getResources().getString(R.string.messages_list_date_format));
+ }
+
+ return dateFormat.format(cal.getTime());
+ } catch (NumberFormatException nfe) {
+ return String.valueOf(timestamp);
+ }
+ }
+
+ private boolean isToday(Calendar cal) {
+ return isSameDay(cal, Calendar.getInstance());
+ }
+
+ private boolean isSameDay(Calendar cal1, Calendar cal2) {
+ if (cal1 == null || cal2 == null) {
+ return false;
+ }
+
+ return (cal1.get(Calendar.ERA) == cal2.get(Calendar.ERA) &&
+ cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
+ cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR));
+ }
class ChatListAdapter extends BaseAdapter {
private boolean useNativeAPI;
@@ -380,35 +407,21 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
Contact lContact = ContactsManager.getInstance().findContactWithAddress(getActivity().getContentResolver(), address);
String message = "";
- if (useNativeAPI) {
- LinphoneChatRoom chatRoom = LinphoneManager.getLc().getOrCreateChatRoom(contact);
- LinphoneChatMessage[] history = chatRoom.getHistory(20);
- if (history != null && history.length > 0) {
- for (int i = history.length - 1; i >= 0; i--) {
- LinphoneChatMessage msg = history[i];
- if (msg.getText() != null && msg.getText().length() > 0 && msg.getFileTransferInformation() == null) {
- message = msg.getText();
- break;
- }
+ Long time = null;
+ LinphoneChatRoom chatRoom = LinphoneManager.getLc().getOrCreateChatRoom(contact);
+ LinphoneChatMessage[] history = chatRoom.getHistory(20);
+ if (history != null && history.length > 0) {
+ for (int i = history.length - 1; i >= 0; i--) {
+ LinphoneChatMessage msg = history[i];
+ if (msg.getText() != null && msg.getText().length() > 0 && msg.getFileTransferInformation() == null) {
+ message = msg.getText();
+ time = msg.getTime();
+ break;
}
}
- } else {
- List messages = LinphoneActivity.instance().getChatMessages(contact);
- if (messages != null && messages.size() > 0) {
- int iterator = messages.size() - 1;
- ChatMessage lastMessage = null;
-
- while (iterator >= 0) {
- lastMessage = messages.get(iterator);
- if (lastMessage.getMessage() == null) {
- iterator--;
- } else {
- iterator = -1;
- }
- }
- message = (lastMessage == null || lastMessage.getMessage() == null) ? "" : lastMessage.getMessage();
- }
}
+ TextView date = (TextView) view.findViewById(R.id.date);
+ date.setText(timestampToHumanDate(time));
TextView lastMessageView = (TextView) view.findViewById(R.id.lastMessage);
lastMessageView.setText(message);
diff --git a/src/org/linphone/DialerFragment.java b/src/org/linphone/DialerFragment.java
index 29894203a..838e5f6df 100644
--- a/src/org/linphone/DialerFragment.java
+++ b/src/org/linphone/DialerFragment.java
@@ -41,11 +41,10 @@ import android.widget.RelativeLayout;
public class DialerFragment extends Fragment {
private static DialerFragment instance;
private static boolean isCallTransferOngoing = false;
-
- public boolean mVisible;
+
private AddressText mAddress;
private CallButton mCall;
- private RelativeLayout mAddContact;
+ private ImageView mAddContact;
private OnClickListener addContactListener, cancelListener, transferListener;
private boolean shouldEmptyAddressField = true;
@@ -67,7 +66,7 @@ public class DialerFragment extends Fragment {
if (isCallTransferOngoing) {
mCall.setImageResource(R.drawable.call_transfer);
} else {
- mCall.setImageResource(R.drawable.add_call);
+ mCall.setImageResource(R.drawable.call_add);
}
} else {
mCall.setImageResource(R.drawable.call_audio_start);
@@ -78,7 +77,7 @@ public class DialerFragment extends Fragment {
numpad.setAddressWidget(mAddress);
}
- mAddContact = (RelativeLayout) view.findViewById(R.id.addContact);
+ mAddContact = (ImageView) view.findViewById(R.id.addContact);
addContactListener = new OnClickListener() {
@Override
@@ -162,7 +161,7 @@ public class DialerFragment extends Fragment {
mCall.setImageResource(R.drawable.call_transfer);
mCall.setExternalClickListener(transferListener);
} else {
- mCall.setImageResource(R.drawable.add_call);
+ mCall.setImageResource(R.drawable.call_add);
mCall.resetClickListener();
}
mAddContact.setEnabled(true);
@@ -170,7 +169,6 @@ public class DialerFragment extends Fragment {
mAddContact.setOnClickListener(cancelListener);
} else {
mCall.setImageResource(R.drawable.call_audio_start);
- //mCall.setAlpha(30);
mAddContact.setEnabled(true);
//mAddContact.setImageResource(R.drawable.add_contact_button);
mAddContact.setOnClickListener(addContactListener);
@@ -179,7 +177,7 @@ public class DialerFragment extends Fragment {
}
public void enableDisableAddContact() {
- mAddContact.setEnabled(LinphoneManager.getLc().getCallsNb() > 0 || !mAddress.getText().toString().equals(""));
+ mAddContact.setEnabled(LinphoneManager.getLc().getCallsNb() > 0 || !mAddress.getText().toString().equals(""));
}
public void displayTextInAddressBar(String numberOrSipAddress) {
diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java
index 0701c7a5c..f4f639f80 100644
--- a/src/org/linphone/LinphoneActivity.java
+++ b/src/org/linphone/LinphoneActivity.java
@@ -347,6 +347,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
displaySettings();
break;
case 2:
+ displayAssistant();
break;
case 3:
displayAbout();
@@ -728,9 +729,13 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta
//settings.setSelected(true);
}
+ public void displayAssistant() {
+ startActivity(new Intent(LinphoneActivity.this, SetupActivity.class));
+ }
+
public boolean displayChatMessageNotification(String address){
if(chatFragment != null) {
- if(chatFragment.getSipUri().equals(address)){
+ if(chatFragment.getSipUri().equals(address)) {
return false;
}
}
diff --git a/src/org/linphone/setup/MenuFragment.java b/src/org/linphone/setup/MenuFragment.java
index 8e6370904..c140d429d 100644
--- a/src/org/linphone/setup/MenuFragment.java
+++ b/src/org/linphone/setup/MenuFragment.java
@@ -26,7 +26,7 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
-import android.widget.ImageView;
+
/**
* @author Sylvain Berfini
*/
@@ -36,7 +36,7 @@ public class MenuFragment extends Fragment implements OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.setup_menu, container, false);
+ View view = inflater.inflate(R.layout.assistant_menu, container, false);
createAccount = (Button) view.findViewById(R.id.setup_create_account);
createAccount.setOnClickListener(this);
diff --git a/src/org/linphone/setup/SetupActivity.java b/src/org/linphone/setup/SetupActivity.java
index 62468184d..9db37ab43 100644
--- a/src/org/linphone/setup/SetupActivity.java
+++ b/src/org/linphone/setup/SetupActivity.java
@@ -63,7 +63,7 @@ public class SetupActivity extends Activity implements OnClickListener {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
- setContentView(R.layout.setup);
+ setContentView(R.layout.assistant);
firstFragment = getResources().getBoolean(R.bool.setup_use_linphone_as_first_fragment) ?
SetupFragmentsEnum.LINPHONE_LOGIN : SetupFragmentsEnum.MENU;
if (findViewById(R.id.fragmentContainer) != null) {