package com.couchbase.ratingapp;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.format.Formatter;
import android.util.Log;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;
import com.couchbase.lite.LiveQuery;
import org.w3c.dom.Text;
public class MainActivity extends FragmentActivity {
public StorageManager storageManager;
RecyclerView recyclerView;
RatingsAdapter adapter;
ViewPager viewPager;
TextView keyTextView;
TextView valueTextView;
Switch syncSwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/** Get the ViewPager and set it's PagerAdapter so that it can display items */
viewPager = (ViewPager) findViewById(R.id.viewpager);
final RatingFragmentPagerAdapter adapter = new RatingFragmentPagerAdapter(getSupportFragmentManager(),
MainActivity.this);
viewPager.setAdapter(adapter);
/** Connect the view pager to the tab layout to automatically synchronize the tab
* state and current page of the view pager that is being displayed */
final TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
Log.d("RatingApp", String.valueOf(tab.getPosition()));
viewPager.setCurrentItem(tab.getPosition(), true);
switch (tab.getPosition()) {
case 0:
setupUniqueQuery();
return;
case 1:
setupUserQuery();
return;
default:
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition(), true);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition(), true);
}
});
/** When the switch changes value, update the replications */
syncSwitch = (Switch) findViewById(R.id.switch1);
syncSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
storageManager.startSyncGatewayReplications();
} else {
storageManager.stopSyncGatewayReplications();
}
}
});
/** Couchbase Lite database bootstrap */
storageManager = new StorageManager(getApplicationContext());
recyclerView = (RecyclerView) findViewById(R.id.list);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
keyTextView = (TextView) findViewById(R.id.keyColumn);
valueTextView = (TextView) findViewById(R.id.valueColumn);
/** Query the views that were registered when the StorageManager was instantiated */
setupUniqueQuery();
}
void setupUniqueQuery() {
/** Update the labels of the Recycler View */
keyTextView.setText("Rating");
valueTextView.setText("Total");
LiveQuery liveQuery = storageManager.database.getView(StorageManager.UNIQUE_RATINGS_VIEW).createQuery().toLiveQuery();
liveQuery.setGroupLevel(1); // use group level to aggregate by key (i.e. the rating value)
liveQuery.setDescending(true);
adapter = new RatingsAdapter(liveQuery, this);
recyclerView.setAdapter(adapter);
}
void setupUserQuery() {
/** Update the labels of the Recycler View */
keyTextView.setText("Name (id)");
valueTextView.setText("Conflicts");
LiveQuery liveQuery = storageManager.database.getView(StorageManager.USER_RATINGS_VIEW).createQuery().toLiveQuery();
adapter = new RatingsAdapter(this, liveQuery, storageManager.database);
recyclerView.setAdapter(adapter);
}
/** Get local IP to display in a TextView on the P2P tab */
public String getLocalIpAddress() {
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
return Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
}
}