diff --git a/res/layout/history_cell_simple.xml b/res/layout/history_cell_simple.xml
new file mode 100644
index 000000000..e29e37b0c
--- /dev/null
+++ b/res/layout/history_cell_simple.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/history_simple.xml b/res/layout/history_simple.xml
new file mode 100644
index 000000000..e0e1f55dc
--- /dev/null
+++ b/res/layout/history_simple.xml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/main.xml b/res/layout/main.xml
index cefba495d..dd80d88f2 100644
--- a/res/layout/main.xml
+++ b/res/layout/main.xml
@@ -79,6 +79,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout="@layout/status" />
+
https://www.linphone.org/wizard.php
+ true
false
false
false
diff --git a/res/xml-v14/preferences.xml b/res/xml-v14/preferences.xml
index 3802a19d8..162af496d 100644
--- a/res/xml-v14/preferences.xml
+++ b/res/xml-v14/preferences.xml
@@ -262,7 +262,8 @@
android:switchTextOn="@string/yes"
android:switchTextOff="@string/no"
android:key="@string/pref_debug_key"
- android:title="@string/pref_debug" android:enabled="true"/>
+ android:title="@string/pref_debug"
+ android:defaultValue="false"/>
diff --git a/res/xml/account_preferences.xml b/res/xml/account_preferences.xml
index bc09b9d3e..2c23bfeb1 100644
--- a/res/xml/account_preferences.xml
+++ b/res/xml/account_preferences.xml
@@ -30,6 +30,8 @@
mLogs;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ mInflater = inflater;
+ View view = inflater.inflate(R.layout.history_simple, container, false);
+
+ historyList = (ListView) view.findViewById(R.id.historyList);
+ historyList.setOnItemClickListener(this);
+ registerForContextMenu(historyList);
+
+ allCalls = (ImageView) view.findViewById(R.id.allCalls);
+ allCalls.setOnClickListener(this);
+ missedCalls = (ImageView) view.findViewById(R.id.missedCalls);
+ missedCalls.setOnClickListener(this);
+ allCalls.setEnabled(false);
+ onlyDisplayMissedCalls = false;
+ edit = (ImageView) view.findViewById(R.id.edit);
+ edit.setOnClickListener(this);
+ ok = (ImageView) view.findViewById(R.id.ok);
+ ok.setOnClickListener(this);
+
+ return view;
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ if (LinphoneActivity.isInstanciated())
+ LinphoneActivity.instance().selectMenu(FragmentsAvailable.HISTORY);
+
+ mLogs = Arrays.asList(LinphoneManager.getLc().getCallLogs());
+ historyList.setAdapter(new CallHistoryAdapter(getActivity().getApplicationContext()));
+ }
+
+ @Override
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
+ super.onCreateContextMenu(menu, v, menuInfo);
+ menu.add(0, v.getId(), 0, getString(R.string.delete));
+ }
+
+ @Override
+ public boolean onContextItemSelected(MenuItem item) {
+ AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
+ LinphoneCallLog log = mLogs.get(info.position);
+ LinphoneManager.getLc().removeCallLog(log);
+ mLogs = Arrays.asList(LinphoneManager.getLc().getCallLogs());
+ historyList.setAdapter(new CallHistoryAdapter(getActivity().getApplicationContext()));
+ return true;
+ }
+
+ @Override
+ public void onClick(View v) {
+ int id = v.getId();
+
+ if (id == R.id.allCalls) {
+ allCalls.setEnabled(false);
+ missedCalls.setEnabled(true);
+ onlyDisplayMissedCalls = false;
+
+ mLogs = Arrays.asList(LinphoneManager.getLc().getCallLogs());
+ }
+ else if (id == R.id.missedCalls) {
+ allCalls.setEnabled(true);
+ missedCalls.setEnabled(false);
+ onlyDisplayMissedCalls = true;
+ }
+ else if (id == R.id.ok) {
+ edit.setVisibility(View.VISIBLE);
+ ok.setVisibility(View.GONE);
+ isEditMode = false;
+ }
+ else if (id == R.id.edit) {
+ edit.setVisibility(View.GONE);
+ ok.setVisibility(View.VISIBLE);
+ isEditMode = true;
+ }
+
+ historyList.setAdapter(new CallHistoryAdapter(getActivity().getApplicationContext()));
+ }
+
+ @Override
+ public void onItemClick(AdapterView> adapter, View view, int position, long id) {
+ if (isEditMode) {
+ LinphoneCallLog log = mLogs.get(position);
+ LinphoneManager.getLc().removeCallLog(log);
+ mLogs = Arrays.asList(LinphoneManager.getLc().getCallLogs());
+ historyList.setAdapter(new CallHistoryAdapter(getActivity().getApplicationContext()));
+ } else {
+ LinphoneCallLog log = mLogs.get(position);
+ LinphoneAddress address;
+ if (log.getDirection() == CallDirection.Incoming) {
+ address = log.getFrom();
+ } else {
+ address = log.getTo();
+ }
+ LinphoneActivity.instance().displayHistoryDetail(address.asStringUriOnly(), log);
+ }
+ }
+
+ class CallHistoryAdapter extends BaseAdapter {
+ private Bitmap missedCall, outgoingCall, incomingCall;
+
+ CallHistoryAdapter(Context aContext) {
+ missedCall = BitmapFactory.decodeResource(getResources(), R.drawable.call_status_missed);
+
+ if (onlyDisplayMissedCalls) {
+ List missedCalls = new ArrayList();
+ for (LinphoneCallLog log : mLogs) {
+ if (log.getStatus() == CallStatus.Missed) {
+ missedCalls.add(log);
+ }
+ }
+ mLogs = missedCalls;
+ } else {
+ outgoingCall = BitmapFactory.decodeResource(getResources(), R.drawable.call_status_outgoing);
+ incomingCall = BitmapFactory.decodeResource(getResources(), R.drawable.call_status_incoming);
+ }
+ }
+ public int getCount() {
+ return mLogs.size();
+ }
+
+ public Object getItem(int position) {
+ return mLogs.get(position);
+ }
+
+ public long getItemId(int position) {
+ return position;
+ }
+
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View view = null;
+ if (convertView != null) {
+ view = convertView;
+ } else {
+ view = mInflater.inflate(R.layout.history_cell_simple, parent,false);
+ }
+
+ LinphoneCallLog log = mLogs.get(position);
+ LinphoneAddress address;
+
+ TextView contact = (TextView) view.findViewById(R.id.sipUri);
+ ImageView detail = (ImageView) view.findViewById(R.id.detail);
+ ImageView delete = (ImageView) view.findViewById(R.id.delete);
+ ImageView callDirection = (ImageView) view.findViewById(R.id.icon);
+
+
+ if (log.getDirection() == CallDirection.Incoming) {
+ address = log.getFrom();
+ if (log.getStatus() == CallStatus.Missed) {
+ callDirection.setImageBitmap(missedCall);
+ } else {
+ callDirection.setImageBitmap(incomingCall);
+ }
+ } else {
+ address = log.getTo();
+ callDirection.setImageBitmap(outgoingCall);
+ }
+
+ LinphoneUtils.findUriPictureOfContactAndSetDisplayName(address, view.getContext().getContentResolver());
+ String displayName = address.getDisplayName();
+ String sipUri = address.asStringUriOnly();
+
+ if (displayName == null) {
+ if (getResources().getBoolean(R.bool.only_display_username_if_unknown) && LinphoneUtils.isSipAddress(sipUri)) {
+ contact.setText(LinphoneUtils.getUsernameFromAddress(sipUri));
+ } else {
+ contact.setText(sipUri);
+ }
+ } else {
+ if (getResources().getBoolean(R.bool.only_display_username_if_unknown) && LinphoneUtils.isSipAddress(address.getDisplayName())) {
+ contact.setText(LinphoneUtils.getUsernameFromAddress(address.getDisplayName()));
+ } else {
+ contact.setText(displayName);
+ }
+ }
+ view.setTag(sipUri);
+
+ if (isEditMode) {
+ delete.setVisibility(View.VISIBLE);
+ detail.setVisibility(View.GONE);
+ } else {
+ delete.setVisibility(View.GONE);
+ detail.setVisibility(View.VISIBLE);
+ }
+
+ return view;
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java
index d8802f621..e22170bc9 100644
--- a/src/org/linphone/LinphoneActivity.java
+++ b/src/org/linphone/LinphoneActivity.java
@@ -185,7 +185,11 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
switch (newFragmentType) {
case HISTORY:
- newFragment = new HistoryFragment();
+ if (getResources().getBoolean(R.bool.use_simple_history)) {
+ newFragment = new HistorySimpleFragment();
+ } else {
+ newFragment = new HistoryFragment();
+ }
break;
case HISTORY_DETAIL:
newFragment = new HistoryDetailFragment();
diff --git a/src/org/linphone/PreferencesActivity.java b/src/org/linphone/PreferencesActivity.java
index dce9e4ce7..450b12ffe 100644
--- a/src/org/linphone/PreferencesActivity.java
+++ b/src/org/linphone/PreferencesActivity.java
@@ -308,7 +308,7 @@ public class PreferencesActivity extends LinphonePreferencesActivity implements
videoSettings.removeAll();
videoSettings.setLayoutResource(R.layout.hidden);
- CheckBoxPreference enableVideo = (CheckBoxPreference) findPreference(R.string.pref_video_enable_key);
+ Preference enableVideo = findPreference(R.string.pref_video_enable_key);
enableVideo.setLayoutResource(R.layout.hidden);
}
}