Provide progress indicator for searches.

Searches can be slow, so users need an indicator.  The indicator is
also used when opening a message list or when refreshing it, or when
loading more messages.

This also removes some unused code.
This commit is contained in:
Joe Steele 2012-11-27 11:50:41 -05:00
parent ac6c48c2d8
commit 689f69ca49
4 changed files with 46 additions and 25 deletions

View File

@ -30,6 +30,14 @@
android:textSize="12sp" />
</LinearLayout>
<ProgressBar
android:id="@+id/actionbar_progress"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center"
style="?android:attr/indeterminateProgressStyle"
android:visibility="gone" />
<TextView
android:id="@+id/actionbar_unread_count"
android:layout_width="wrap_content"

View File

@ -30,6 +30,14 @@
android:textColor="?android:attr/textColorSecondary" />
</LinearLayout>
<ProgressBar
android:id="@+id/actionbar_progress"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center"
style="?android:attr/indeterminateProgressStyle"
android:visibility="gone" />
<TextView
android:id="@+id/actionbar_unread_count"
android:layout_width="wrap_content"
@ -39,15 +47,4 @@
android:textColor="?android:attr/textColorTertiary"
android:textSize="36sp" />
<ImageButton
android:id="@+id/actionbar_remote_search"
android:gravity="center_vertical"
android:focusable="false"
android:layout_marginRight="3dip"
android:background="?attr/iconActionRemoteSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/action_remote_search"
android:visibility="gone"/>
</LinearLayout>

View File

@ -11,8 +11,10 @@ import android.support.v4.app.FragmentManager.OnBackStackChangedListener;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
@ -114,6 +116,9 @@ public class MessageList extends K9FragmentActivity implements MessageListFragme
private LocalSearch mSearch;
private boolean mSingleFolderMode;
private boolean mSingleAccountMode;
private ProgressBar mActionBarProgress;
private MenuItem mMenuButtonCheckMail;
private View mActionButtonIndeterminateProgress;
/**
* {@code true} if the message list should be displayed as flat list (i.e. no threading)
@ -246,6 +251,9 @@ public class MessageList extends K9FragmentActivity implements MessageListFragme
mActionBarTitle = (TextView) customView.findViewById(R.id.actionbar_title_first);
mActionBarSubTitle = (TextView) customView.findViewById(R.id.actionbar_title_sub);
mActionBarUnread = (TextView) customView.findViewById(R.id.actionbar_unread_count);
mActionBarProgress = (ProgressBar) customView.findViewById(R.id.actionbar_progress);
mActionButtonIndeterminateProgress =
getLayoutInflater().inflate(R.layout.actionbar_indeterminate_progress_actionview, null);
mActionBar.setDisplayHomeAsUpEnabled(true);
}
@ -472,6 +480,7 @@ public class MessageList extends K9FragmentActivity implements MessageListFragme
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.message_list_option, menu);
mMenu = menu;
mMenuButtonCheckMail= menu.findItem(R.id.check_mail);
return true;
}
@ -731,4 +740,23 @@ public class MessageList extends K9FragmentActivity implements MessageListFragme
// Remove action button for remote search
configureMenu(mMenu);
}
public void enableActionBarProgress(boolean enable) {
if (mMenuButtonCheckMail != null && mMenuButtonCheckMail.isVisible()) {
mActionBarProgress.setVisibility(ProgressBar.GONE);
if (enable) {
mMenuButtonCheckMail
.setActionView(mActionButtonIndeterminateProgress);
} else {
mMenuButtonCheckMail.setActionView(null);
}
} else {
if (mMenuButtonCheckMail != null)
mMenuButtonCheckMail.setActionView(null);
if (enable) {
mActionBarProgress.setVisibility(ProgressBar.VISIBLE);
} else {
mActionBarProgress.setVisibility(ProgressBar.GONE);
}
}
}
}

View File

@ -378,9 +378,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
private FontSizes mFontSizes = K9.getFontSizes();
private MenuItem mRefreshMenuItem;
private ActionMode mActionMode;
private View mActionBarProgressView;
private Boolean mHasConnectivity;
@ -608,16 +606,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
}
private void progress(final boolean progress) {
// Make sure we don't try this before the menu is initialized
// this could happen while the activity is initialized.
if (mRefreshMenuItem != null) {
if (progress) {
mRefreshMenuItem.setActionView(mActionBarProgressView);
} else {
mRefreshMenuItem.setActionView(null);
}
}
mFragmentListener.enableActionBarProgress(progress);
if (mPullToRefreshView != null && !progress) {
mPullToRefreshView.onRefreshComplete();
}
@ -712,8 +701,6 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
View view = inflater.inflate(R.layout.message_list_fragment, container, false);
mActionBarProgressView = inflater.inflate(R.layout.actionbar_indeterminate_progress_actionview, null);
initializePullToRefresh(inflater, view);
initializeLayout();
@ -2699,6 +2686,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
}
public interface MessageListFragmentListener {
void enableActionBarProgress(boolean enable);
void setMessageListProgress(int level);
void showThread(Account account, String folderName, long rootId);
void showMoreFromSameSender(String senderAddress);