MonthScheduler.java :  » Schedule » scheduled-message-sender » es » kivitel » android » sms » gui » Android Open Source

Android Open Source » Schedule » scheduled message sender 
scheduled message sender » es » kivitel » android » sms » gui » MonthScheduler.java
package es.kivitel.android.sms.gui;


import java.util.Calendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.TextView;
import es.kivitel.android.sms.R;
import es.kivitel.android.sms.kernel.DatabaseManager;

public class MonthScheduler extends Activity{
  private static final String TAG = MonthScheduler.class.getName();
  private static final int MENU_BACK = 0;
  private static final int MENU_QUIT = 1;
  private static final int MENU_HELP = 2;
  String[] monthName = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", 
              "Aug", "Sep", "Oct", "Nov", "Dec"};
    //Calendar: Month goes from 0 to 11,
     //Week days are from 1 (Sunday) to 7 (Saturday)
    //Day of month begins at 1 (warning: 0 refers to the previous month)        
  Calendar cInstance;
  GridView gv;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         setContentView(R.layout.month_activity);
         gv = (GridView) findViewById(R.id.ButtonGridView);              
      cInstance = Calendar.getInstance();
      cInstance.set(Calendar.HOUR,0);
      cInstance.set(Calendar.MINUTE,0);
      cInstance.set(Calendar.SECOND,0);
      cInstance.set(Calendar.MILLISECOND,0);      
      gv.setAdapter( new ButtonAdapter(cInstance) );   
      
      // Watches events button
      final Button btLeftMonth = (Button) findViewById(R.id.BtnLeftMonth);
      btLeftMonth.setOnClickListener(new View.OnClickListener() {
        // Performs action on click
          public void onClick(View v) {
            cInstance.set( Calendar.MONTH, cInstance.get(Calendar.MONTH) -1 );
            gv.setAdapter( new ButtonAdapter(cInstance));
          } 
      });   
      
      // Watch events button
      final Button btRightMonth = (Button) findViewById(R.id.BtnRightMonth);
      btRightMonth.setOnClickListener(new View.OnClickListener() {
        // Perform action on click
          public void onClick(View v) {
            cInstance.set( Calendar.MONTH, cInstance.get(Calendar.MONTH) + 1 );
            gv.setAdapter( new ButtonAdapter(cInstance));
          } 
      });          
   }  
  
    public class ButtonAdapter extends BaseAdapter {
        
        Calendar cal;         
        int dayInit;//The day of the week the month begins

        //A calendar instance is passed to control months
        public ButtonAdapter(Calendar _cInstance) {
            cal = _cInstance;
            _initMonth();
        }
        
        private void _initMonth(){
            cal.set( Calendar.DAY_OF_MONTH, 1); 
            dayInit = cal.get( Calendar.DAY_OF_WEEK ) -1; // -1 because count begins in 1 and not in 0
            
            String year = " (" + String.valueOf(cal.get( Calendar.YEAR ))+")";           
            final TextView tv = (TextView) findViewById(R.id.title);
            tv.setText( monthName[cal.get( Calendar.MONTH )] + year );
            
            Button btL = (Button) findViewById(R.id.BtnLeftMonth);
            btL.setText( monthName[(cal.get( Calendar.MONTH ) +11)% 12]);
            Button btR = (Button) findViewById(R.id.BtnRightMonth);
            btR.setText( monthName[(cal.get( Calendar.MONTH ) + 1)% 12]);
            
        }

        public int getCount() {
            return ( cal.getActualMaximum( Calendar.DAY_OF_MONTH ) +  dayInit);
        }

        public Object getItem(int position) {
            return null;
        }

        public long getItemId(int position) {
            return 0;
        }

        // create a new ImageView for each item referenced by the Adapter
        public View getView(int position, View convertView, ViewGroup parent) {
            Button bt;
            Calendar dayReviewed;
            int state, day = position - dayInit +1; // when position == dayInit, we want day = 1;            
            if( day > 0 ){          
              bt = new Button(parent.getContext());
              bt.setLayoutParams(new GridView.LayoutParams(40, 70));
              bt.setPadding(1, 1, 1, 1);
              //We'll check whether exists any event or not
              dayReviewed= (Calendar) cInstance.clone();
              dayReviewed.set(Calendar.DAY_OF_MONTH, day);
              state = DatabaseManager.checkProgrammedEvents(dayReviewed);
              switch(state){
              case 0: bt.setBackgroundResource(R.drawable.simple_button);                  
                break;
              case 1: bt.setBackgroundResource(R.drawable.today_btn);
                break;
              case 2: bt.setBackgroundResource(R.drawable.eventtoday_btn);
                break;
              case 3: bt.setBackgroundResource(R.drawable.event_btn);
                break;
              case 4: bt.setBackgroundResource(R.drawable.past_eventnotsent_btn);
                break;
              case 5: bt.setBackgroundResource(R.drawable.past_eventsent_btn);
                break;
              default:
                break;              
              }                  
              bt.setText( String.valueOf( day ) ); //added 1 because days begin in '1', not in '0'
              bt.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {
            Calendar day = (Calendar) cInstance.clone();
            day.set(Calendar.DAY_OF_MONTH, Integer.parseInt(((Button)v).getText().toString()));            
            Bundle bundle = new Bundle();
            bundle.putLong(EventAdapterActivity.listingDate,day.getTimeInMillis());            
            Intent i = new Intent(v.getContext(),EventAdapterActivity.class);
            i.putExtras(bundle);
            startActivityForResult(i, MainActivity.CLOSING);
          }
        });
            }
            else{            
              bt = new Button(parent.getContext());
              bt.setClickable(false);
              bt.setLayoutParams(new GridView.LayoutParams(40, 70));
              bt.setPadding(1, 1, 1, 1);
              bt.setVisibility(View.INVISIBLE);
              bt.setFocusable(false);
            }            
            return bt;            

        }
    }
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, MonthScheduler.MENU_HELP, 0, getResources().getString(R.string.MenuHelp)).setIcon(android.R.drawable.ic_menu_info_details);        
        menu.add(0, MonthScheduler.MENU_BACK, 0, getResources().getString(R.string.MenuBack)).setIcon(android.R.drawable.ic_menu_revert);
        menu.add(0, MonthScheduler.MENU_QUIT, 0, getResources().getString(R.string.MenuQuit)).setIcon(android.R.drawable.ic_menu_close_clear_cancel);
        return true;
    }

    /* Handles item selections */
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case MonthScheduler.MENU_BACK:
          startActivityForResult(new Intent(this,MainActivity.class), MainActivity.CLOSING);
          finish();
            return true;
        case MonthScheduler.MENU_HELP:
            final CharSequence[] items = {"This calendar includes the following highlights:\nRed: during this day at least one event was programmed and wasn' sent.\nBlue: an event is programmed for this day and still hasn't been reached\nRed border- today Green: all the past events were programmed and sent"};
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("Application info: Calendar");
            builder.setItems(items, new DialogInterface.OnClickListener() {        
        public void onClick(DialogInterface dialog, int which) {
          dialog.cancel();
        }
      });          
            builder.create();
            return true;
        case MonthScheduler.MENU_QUIT:
          Bundle bundle = new Bundle();
          bundle.putInt(MainActivity.CLOSING_PARAM, 1);
          Intent i = new Intent(this,MainActivity.class);
          i.putExtras(bundle);
          setResult(RESULT_OK, i);
          DatabaseManager.close();
          finish(); 
            return true;
        }
        return false;
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      Bundle extras = getIntent().getExtras();
      if(extras!=null)
        if(extras.getInt(MainActivity.CLOSING_PARAM) == 1) finish();    
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.