~ubuntu-branches/ubuntu/oneiric/kdepim/oneiric-updates

« back to all changes in this revision

Viewing changes to kresources/slox/sloxfolderdialog.cpp

  • Committer: Package Import Robot
  • Author(s): Philip Muškovac
  • Date: 2011-06-28 19:33:24 UTC
  • mfrom: (0.2.13) (0.1.13 sid)
  • Revision ID: package-import@ubuntu.com-20110628193324-8yvjs8sdv9rdoo6c
Tags: 4:4.7.0-0ubuntu1
* New upstream release
  - update install files
  - add missing kdepim-doc package to control file
  - Fix Vcs lines
  - kontact breaks/replaces korganizer << 4:4.6.80
  - tighten the dependency of kdepim-dev on libkdepim4 to fix lintian error

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
    Copyright (c) 2005 by Volker Krause <vkrause@kde.org>
3
 
 
4
 
    This program is free software; you can redistribute it and/or modify
5
 
    it under the terms of the GNU General Public License as published by
6
 
    the Free Software Foundation; either version 2 of the License, or
7
 
    (at your option) any later version.
8
 
 
9
 
    This program is distributed in the hope that it will be useful,
10
 
    but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
 
    GNU General Public License for more details.
13
 
 
14
 
    You should have received a copy of the GNU General Public License
15
 
    along with this program; if not, write to the Free Software
16
 
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
 
*/
18
 
 
19
 
#include <QPixmap>
20
 
 
21
 
#include <kiconloader.h>
22
 
#include <kguiitem.h>
23
 
#include <kcomponentdata.h>
24
 
#include <k3listview.h>
25
 
#include <klocale.h>
26
 
 
27
 
#include "sloxfolderdialog.h"
28
 
#include "sloxfoldermanager.h"
29
 
 
30
 
SloxFolderDialog::SloxFolderDialog( SloxFolderManager *manager, FolderType type, QWidget *parent ) :
31
 
  KDialog( parent),
32
 
  mManager( manager ),
33
 
  mFolderType( type )
34
 
{
35
 
  setCaption( i18n("Select Folder") );
36
 
  setButtons( Ok|Cancel|User1 );
37
 
  setDefaultButton( Ok );
38
 
  setButtonGuiItem( User1, KGuiItem( i18n("Reload"), "view-refresh" ) );
39
 
  mListView = new K3ListView( this );
40
 
  mListView->setRootIsDecorated( true );
41
 
  mListView->setShowSortIndicator( true );
42
 
  mListView->addColumn( i18n("Folder") );
43
 
  mListView->addColumn( i18n("Folder ID"), 0 );
44
 
  setMainWidget( mListView );
45
 
  updateFolderView();
46
 
  connect( manager, SIGNAL( foldersUpdated() ), SLOT( updateFolderView() ) );
47
 
  connect(this,SIGNAL(user1Clicked()),this,SLOT(slotUser1( )));
48
 
}
49
 
 
50
 
SloxFolderDialog::~SloxFolderDialog()
51
 
{
52
 
  QMap<QString, SloxFolder*> folders = mManager->folders();
53
 
  QMap<QString, SloxFolder*>::Iterator it;
54
 
  for ( it = folders.begin(); it != folders.end(); ++it )
55
 
    (*it)->item = 0;
56
 
}
57
 
 
58
 
void SloxFolderDialog::updateFolderView()
59
 
{
60
 
  QString selected = selectedFolder();
61
 
  mListView->clear();
62
 
  QMap<QString, SloxFolder*> folders = mManager->folders();
63
 
  QMap<QString, SloxFolder*>::Iterator it;
64
 
  for ( it = folders.begin(); it != folders.end(); ++it )
65
 
    createFolderViewItem( *it );
66
 
  setSelectedFolder( selected );
67
 
}
68
 
 
69
 
void SloxFolderDialog::slotUser1( )
70
 
{
71
 
  mManager->requestFolders();
72
 
}
73
 
 
74
 
void SloxFolderDialog::createFolderViewItem( SloxFolder *folder )
75
 
{
76
 
  if ( folder->item )
77
 
    return;
78
 
  if ( folder->type() != mFolderType && folder->type() != Unbound )
79
 
    return;
80
 
  if( mManager->folders().contains( folder->parentId() ) ) {
81
 
    SloxFolder *parent = mManager->folders()[folder->parentId()];
82
 
    createFolderViewItem( parent );
83
 
    if ( parent->item )
84
 
      folder->item = new K3ListViewItem( parent->item );
85
 
    else
86
 
      folder->item = new K3ListViewItem( mListView );
87
 
  } else {
88
 
    folder->item = new K3ListViewItem( mListView );
89
 
  }
90
 
  folder->item->setText( 0, folder->name() );
91
 
  folder->item->setText( 1, folder->id() );
92
 
  KIconLoader::global()->addAppDir( "kmail" );
93
 
  KIconLoader::global()->addAppDir( "kdepim" );
94
 
  switch ( folder->type() ) {
95
 
    case Calendar:
96
 
      folder->item->setPixmap( 0, SmallIcon( "view-calendar" ) );
97
 
      break;
98
 
    case Tasks:
99
 
      folder->item->setPixmap( 0, SmallIcon( "view-pim-tasks" ) );
100
 
      break;
101
 
    case Contacts:
102
 
      folder->item->setPixmap( 0, SmallIcon( "view-pim-contacts" ) );
103
 
      break;
104
 
    default:
105
 
      folder->item->setPixmap( 0, SmallIcon( "folder" ) );
106
 
      break;
107
 
  }
108
 
}
109
 
 
110
 
QString SloxFolderDialog::selectedFolder() const
111
 
{
112
 
  Q3ListViewItem *item = mListView->selectedItem();
113
 
  if ( item )
114
 
    return item->text( 1 );
115
 
  return "-1"; // OX default folder
116
 
}
117
 
 
118
 
void SloxFolderDialog::setSelectedFolder( const QString &id )
119
 
{
120
 
  QMap<QString, SloxFolder*> folders = mManager->folders();
121
 
  QMap<QString, SloxFolder*>::Iterator it;
122
 
  for ( it = folders.begin(); it != folders.end(); ++it ) {
123
 
    if ( !(*it)->item )
124
 
      continue;
125
 
    if ( (*it)->id() == id || ( ( id.isEmpty() || id == "-1" ) && (*it)->isDefault() ) ) {
126
 
      mListView->setSelected( (*it)->item, true );
127
 
      mListView->ensureItemVisible( (*it)->item );
128
 
      break;
129
 
    }
130
 
  }
131
 
}
132
 
 
133
 
#include "sloxfolderdialog.moc"