@startuml
package "net.micode.notes" {
  package data {
    class Notes {
      +TYPE_NOTE
      +TYPE_WIDGET_2X
      +TYPE_WIDGET_4X
    }
    class NoteItemData {
      +id
      +snippet
      +widgetId
      +bgColorId
    }
  }

  package widget {
    abstract class NoteWidgetProvider {
      #update()
      #getLayoutId()
      #getBgResourceId()
      #getWidgetType()
    }
    class NoteWidgetProvider_2x
    class NoteWidgetProvider_4x
  }

  package ui {
    class NotesListActivity {
      +onCreate()
      +onListItemClick()
    }
    class NotesListItem
  }

  package tool {
    class ResourceParser {
      +WidgetBgResources
    }
  }
}

NoteWidgetProvider_2x --|> NoteWidgetProvider
NoteWidgetProvider_4x --|> NoteWidgetProvider
NoteWidgetProvider ..> ResourceParser
NoteWidgetProvider ..> Notes
NoteItemData ..> Notes
DataUtils ..> Notes
NotesListActivity ..> NoteItemData
NotesListActivity ..> NotesListItem
class DataUtils {
  +batchDeleteNotes()
  +moveNoteToFoler()
  +batchMoveToFolder()
  +getUserFolderCount()
}
class ContentResolver
class ContentProviderOperation
DataUtils --> ContentResolver
DataUtils --> ContentProviderOperation
@enduml